Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO


■MS-DOS拡張機能呼び出し
	PC-9800用MS-DOSの製品一覧を表に示す。
表	PC-9800用MS-DOS一覧
	-------------+-------+-------------------------------------
	製品名       |MS-DOS |対応機種
	             |Version|
	-------------+-------+-------------------------------------
	PS98-111     |1.25   |ノーマル専用
	PS98-121     |2.0    |ノーマル専用
	PS98-122     |2.0    |ノーマル専用
	PS98-123     |2.0    |ノーマル専用
	PS98-XA121   |2.0    |ハイレゾ専用(*1)
	PS98-XL121   |2.0    |ハイレゾ専用(*1)
	PS98-125     |3.1    |ノーマル専用
	PS98-127     |3.1    |ノーマル専用
	PS98-129     |3.1    |ノーマル専用
	PS98-XA125   |3.1    |ハイレゾ専用
	PS98-XL125   |3.1    |ハイレゾ専用(*1)
	PS98-LT125   |3.1    |PC-98LT内蔵
	PS98-HA125   |3.1    |PC-98HA内蔵
	PS98-011     |3.1    |ノーマル・ハイレゾ両用
	PS98-013     |3.3    |ノーマル・ハイレゾ両用
	PS98-015     |3.3A   |ノーマル・ハイレゾ両用
	PS98-017     |3.3B   |ノーマル・ハイレゾ両用
	PS98-H1001-x1|3.3B   |ノーマル・ハイレゾ両用,PC-H98専用(*1)
	PS98-019     |3.3C   |ノーマル・ハイレゾ両用
	PS98-H1001-x2|3.3C   |ノーマル・ハイレゾ両用,PC-H98専用(*1)
	PS98-1002-x2 |3.3D   |ノーマル・ハイレゾ両用,PC-H98対応
	             |3.3D-R |PC-9801NL内蔵(*2)
	PS98-1003-x1 |5.0    |ノーマル・ハイレゾ両用,PC-H98対応
	PS98-1003-x2 |5.0A   |ノーマル・ハイレゾ両用,PC-H98対応
	             |5.0A-H |ハードディスクモデルインストール版(*2,*3)
	             |5.0A-H |1.44MB FDD対応機付属版(*2)
	-------------+-------+-------------------------------------
	*1: この印のバージョンについては解析を行っていない。
	*2: 特に断りのない限り、3.3D,5.0Aと同じ。
	*3: PC-9801NAのハードディスクモデル付属版は1.44MB非対応。


INT DCh - Function 00〜08h
分類	拡張MS-DOS
名前	機能なし
対象	MS-DOS 1.25(PS98-111):IO.SYS
	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=00〜08h
出力	レジスタ変化なし
解説  o 機能なし
関連	


INT DCh - Function 09h Subfunction 0000h
分類	拡張MS-DOS
名前	SCSIデバイスタイプの取得
	Undocumented
対象	MS-DOS 3.3D:IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=09h
	AX=0000h
	DS:DX=バッファアドレス(バッファサイズ8バイト)
出力	レジスタ変化なし
	
	バッファ内容
	-------+-------------------------------------
	オフセット  |内容
	-------+-------------------------------------
	+00h   |SCSI ID 0 のデバイスタイプ値
	+01h   |SCSI ID 1 のデバイスタイプ値
	+02h   |SCSI ID 2 のデバイスタイプ値
	+03h   |SCSI ID 3 のデバイスタイプ値
	+04h   |SCSI ID 4 のデバイスタイプ値
	+05h   |SCSI ID 5 のデバイスタイプ値
	+06h   |SCSI ID 6 のデバイスタイプ値
	+07h   |SCSI ID 7 のデバイスタイプ値
	-------+-------------------------------------
	
	---------------+-----------------------------
	デバイスタイプ値   |意味
	---------------+-----------------------------
	00h            |ハードディスク
	01h            |テープユニット
	05h            |CD-ROM
	07h            |3.5"MO
	84h            |5"MO
	FFh            |デバイスなし
	---------------+-----------------------------
解説  o 接続されているSCSI機器のデバイスタイプ値(機器の種類を表す値)の
	リストをDS:DXで指定したメモリに書き込む。
	デバイスタイプ値は、正確には、SCSIの標準INQUIRYコマンドで得られる
	データの先頭バイトである(bit 7〜5はPeripheral Qualifier、bit 4〜0は
	Peripheral Device Type)。
      o	MS-DOSは、起動時に接続されているSCSI機器を調べ、その情報をワーク
	エリアに保存する。このファンクションは、DS:DXで指定されたアドレスに
	ワークエリアの情報をコピーするだけである。このため、MS-DOS起動時に
	電源の入っていなかったSCSI機器は「デバイスなし」になる。
      u MS-DOSが起動時にSCSI機器の接続チェックをするとき、ID番号0,1,2,…,7の
	順番で行う。途中、機器の接続されていないID番号があると、それ以降の
	チェックは行わない。それ以降のIDに対応するワークエリアは、
	「デバイスなし」の状態になる。機器の接続されていないID番号に対して
	接続チェックを行うと時間がかかるので、MS-DOSの起動時間が長くならない
	ようにするための措置である。
	ただし、ハードディスクは例外で、0から連続したID値に存在していなく
	ても常に正しく認識される。ハードディスクの接続状況はBIOSによって
	0000:0482hにセットいるため、MS-DOSはそこを参照してワークエリアを
	設定するので、MS-DOSの起動時間に影響を与えないためである。
      o MS-DOS 3.3Dでも、3.5"MOが接続されていると「07h」の値が得られる。
	しかし、MS-DOSのドライブとして認識されるわけではない。
関連	0000:0460h
	■MS-DOS 3.3D
	0060:1D3B〜1D42h
	■MS-DOS 5.0, 5.0A
	0060:1DBB〜1DC2h


INT DCh - Function 09h Subfunction 0001h
分類	拡張MS-DOS
名前	不明
	Undocumented
対象	MS-DOS 3.3D:IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=09h
	AX=0001h
	DL=MOドライブのSCSI ID(DA/UAではない)
出力	AX=リターンコード
  	    0000h MOドライブが指定された
	    FFFFh 指定されたSCSI IDはMOではない
解説  o 詳細不明。DLで指定されたSCSI IDがMOドライブのとき正常終了し、それ
	以外のとき異常終了する。
      o MOに関する情報を格納しているエリアを参照し、同エリアの一部に
	定数の書き込みを行っているが、その動作の意味は不明。
      o MS-DOS 3.3Dは、5"MOのみサポート。3.5"MOは認識しない。
      u MS-DOS 3.3Dは、異常終了のリターンコードを返さない。異常終了のとき、
	AX=0001hのままリターンする。
関連	■MS-DOS 3.3D
	0060:9178〜9197h
	■MS-DOS 5.0, 5.0A
	0060:026A〜02A9h


INT DCh - Function 09h Subfunction 0010h,0011h
分類	拡張MS-DOS
名前	MOドライブのイジェクトロック/アンロック
	Undocumented
対象	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=09h
	AX=サブファンクション番号(動作指定)
	    0010h イジェクトロックする
	    0011h イジェクトアンロックする
	DL=MOドライブのDA/UA(SCSI IDではない)
出力	AX=リターンコード
	    0000h 正常終了 イジェクトロックカウンタを加算/減算した
  	    0001h イジェクトロックされていない(Subfunction 0011hのみ)
	    0002h イジェクトロック/アンロック処理に失敗した
	    0003h イジェクトロック/アンロック処理に失敗した
	    FFFFh 指定されたDA/UAはMOではない
解説  o 指定されたMOドライブのイジェクトロック/アンロックを行う。
      o 「イジェクトロック」を実行する毎にロック回数を示すカウンタが
	インクリメントされ、「イジェクトアンロック」を実行する毎に
	同カウンタがデクリメントされる。デクリメント時にカウンタが
	0になったら、イジェクトロックが解除される。
      o ロック回数はドライブ毎に管理されている。
      o MOメディアをドライブにセットした直後に「イジェクトロック」を実行
	しても正常終了しない。MOにアクセスするか、本ファンクションを何回か
	実行すれば正常終了する。
      o 実際にイジェクトロックが解除されるタイミングでMOドライブに異常が
	あると、リターンコードに0002h,0003hが返る。
      o MOメディアが入っていないときにも正常終了しない。
      o リターンコードの0002h,0003hの差異は不明。
関連	0060:03E9h


INT DCh - Function 0Ah(ノーマル)
分類	拡張MS-DOS
名前	RS-232Cポートの初期化
	Undocumented
対象	ノーマル
	MS-DOS 1.25(PS98-111):IO.SYS
	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Ah
出力	■[MS-DOS 3.1(PS98-011), 3.3(all), 5.0,5.0A]
	AX=リターンコード
	    0000  : 正常終了
	    無変化: RSDRV.SYSが組み込まれていない
	■[MS-DOS 1.25, 2.0(all), 3.1(PS98-125・127・129)]
	レジスタ変化なし
解説  o RS-232Cチャネル0のハードウェアとワークエリアを初期化する。
	以降、AUXデバイスを使用した入出力が可能になる。
      o 通信パラメータは、0060:0068h(WORD)の内容に従う。この2バイトには、
	起動時にメモリスイッチ1,2の内容がコピーされている。また、SPEED
	コマンドでパラメータを変更したときにも、その設定が反映する。
      o 受信バッファは256バイト確保される。
      u PS98-011以降のMS-DOSプログラマーズリファレンスマニュアルでは
	ハイレゾのみのファンクションとなっているが、ノーマルモードにも
	存在する。ただし、ハイレゾモードとは入力が異なる。
	MS-DOS 3.1(PS98-011)以降では、ノーマル・ハイレゾモードで共通に
	使用できるINT DCh - Function 0Ehが用意されたため、
	このファンクションは互換性のために残されているだけである。
      u PS98-127以降のMS-DOSでは、RS-232CドライバがIO.SYSから独立して
	いる。この場合、RSDRV.SYSを組み込まないと本ファンクションは
	無動作になる。
	PS98-127・129では、RSDRV.SYSが組み込まれているか否かをこの
	ファンクションの実行結果から判別することはできない。
	RSDRV.SYSが組み込まれているかどうかは0060:1802hを調べればわかる
	(0000hなら組み込まれていない)。しかし、IO.SYS内にRS-232Cドライバが
	組み込まれているシステムではこのアドレスは常に0000hになっているので、
	MS-DOSのバージョンを判定しなければならなくなる。
      u 主な処理内容は以下の通り。
	INT 19h - Function 00h(RSDRV)を実行する。
	PS98-011以降の製品では、このINT 19h実行後のAHレジスタの
	値に従って、0000hかFFFFhのリターンコードを返す処理が入っているが、
	INT 19h - Function 00h(RSDRV)は常に正常終了するため、実際にはFFFFhの
	リターンコードが返ることはない。
      u MS-DOS 1.25ではワークエリアのアドレス等が異なる。
      u MS-DOS 5.0Aの一部バージョン(PC-9821Af・Ne, PC-9801NX/C・P付属版など)
	では、SPEED.EXEを実行してもRS-232C割り込み(INT 0Ch)が割り込み
	コントローラによってマスクされたままになる場合がある。
	このファンクションを直接実行した場合は、そのようなことは起らない。
関連	INT DCh - Function 0Eh Subfunction 00h(ノーマル)
	0060:0068h
	0060:1802h


INT DCh - Function 0Ah(ハイレゾ)
分類	拡張MS-DOS
名前	RS-232Cポートの初期化
対象	ハイレゾ
	MS-DOS 2.0(PS98-XA121・XL121):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Ah
	DH=通信パラメータ指定
	    bit 7,6:ストップビット長
		11b=2ビット
		10b=1.5ビット
		01b=1ビット
	    bit 5  :パリティ指定
		1=偶数
		0=奇数
	    bit 4  :パリティ有無
		1=あり
		0=なし
	    bit 3,2:データビット長
		11b=8ビット
		10b=7ビット
		01b=6ビット
		00b=5ビット
	    bit 1  :0を指定
	    bit 0  :Xフローコントロール
		1=あり
		0=なし
	DL=チャネル番号、通信速度指定
	    bit 7〜4:チャネル番号
		0010b=チャネル2(RS-232C拡張回線)
		0001b=チャネル1(RS-232C拡張回線)
		0000b=チャネル0(本体内蔵RS-232C)
	    bit 3〜0:通信速度
		1001b=19200bps■19200bps対応機のみ
		1000b= 9600bps
		0111b= 4800bps
		0110b= 2400bps
		0101b= 1200bps
		0100b=  600bps
		0011b=  300bps
		0010b=  150bps
		0001b=   75bps
		0000b=    無効
		* 通信速度はチャネル0でのみ指定できる。
		  上記以外の値を設定すると1200bpsになる
	AH=DLと同じ値■[PS98-011以降]
		* DLと同じ値をセットする必要がある
出力	AX=リターンコード
	    0000h 初期化終了
	    FFFFh RS-232C拡張インターフェースボードがないのにチャネル1,2を
		  初期化しようとした
	    無変化 RSDRV.SYSが組み込まれていない
解説  o RS-232Cポートのハードウェアとワークエリアを初期化する。
	以降、AUX,AUX1,AUX2デバイスを使用した入出力が可能になる。
      o 受信バッファは256バイト確保される。
      o ノーマルモードとは入力が異なる。
      u PS98-011以降のMS-DOSでは、AHにDLと同じ値をセットして実行しなければ
	ならない。このファンクションの処理の最初で、DLからAHへのコピーを
	行っていないため。
      o RS-232Cドライバ(RSDRV.SYS)がIO.SYSから独立しているシステムでは、
	RSDRV.SYSを組み込まないと本ファンクションは無動作になる(AXは無変化)。
	処理ルーチン自体はIO.SYS内にある。INT 19h - Function 00h(BIOS)を
	利用して初期化の処理を行う。
      u 19200bps対応機かどうかの判別は、FFE8:0002hを参照して行う。
	本体が19200bps対応機ならば、98ハイレゾボード(PC-9821A-E02)のハイレゾ
	モードでも、BIOSで19200bpsが使用できる。
関連	INT DCh - Function 0Eh Subfunction 00h(ハイレゾ)
	0060:0068h
	0060:1802h
	FFE8:0002h bit 2


INT DCh - Function 0Bh
分類	拡張MS-DOS
名前	機能なし
	Undocumented
対象	MS-DOS 1.25(PS98-111):IO.SYS
	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Bh
出力	レジスタ変化なし
解説  o なにもせずリターンする。
関連	


INT DCh - Function 0Ch Subfunction 0000〜00FFh
分類	拡張MS-DOS
名前	キーの取得(プログラマブルキーの設定内容の取得)
対象	MS-DOS 1.25(PS98-111):IO.SYS
	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Ch
	AX=サブファンクション番号(キー指定値)
	DS:DX=データバッファアドレス
出力	レジスタ変化なし
解説  o ファンクションキー、矢印キーなどのプログラマブルキーに設定されている
	キー設定データを、DS:DXで指定したメモリに書き込む。
      o サブファンクション番号(キー指定値)については、[キー指定値と
	対応するキー一覧]を参照、バッファ構造とバッファのサイズは、
	表[プログラマブルキー設定データのバッファ構造]を参照。
      o MS-DOSのバージョンによって、サポートしているサブファンクション
	(キー指定)の範囲が異なる。サポート範囲は表[MS-DOSバージョン毎の
	サブファンクションサポート範囲]を参照。
関連	INT DCh - Function 0Dh


表	[キー指定値と対応するキー一覧]
	---------------+---------------------------------------------------
	キー指定値     |対応するキー
	---------------+---------------------------------------------------
	0000h          |[f・1]〜[f・10],[SHIFT]+[f・1]〜[SHIFT]+[f・10],
	               |[ROLL UP],[ROLL DOWN],[INS],[DEL],[↑],[←],[→],[↓],
	               |[HOME/CLR],[HELP],[SHIFT]+[HOME/CLR]
	0001〜000Ah    |[f・1]〜[f・10]
	000B〜0014h    |[SHIFT]+[f・1]〜[SHIFT]+[f・10]
	0015h          |[ROLL UP]
	0016h          |[ROLL DOWN]
	0017h          |[INS]
	0018h          |[DEL]
	0019h          |[↑]
	001Ah          |[←]
	001Bh          |[→]
	001Ch          |[↓]
	001Dh          |[HOME/CLR](XAキーボード:[CLR])
	001Eh          |[HELP]
	001Fh          |[SHIFT]+[HOME/CLR](XAキーボード:[HOME])
	0020〜0024h    |[vf・1]〜[vf・5]
	0025〜0029h    |[SHIFT]+[vf・1]〜[vf・5]
	002A〜0033h    |[CTRL]+[f・1]〜[f・10]
	0034〜0038h    |[CTRL]+[vf・1]〜[vf・5]
	0039h          |[CTRL]+[XFER]/[NFER]		(Undocumented)
	003Ah          |[CTRL]+[XFER]/[NFER],[CTRL]+[f・1]〜[f・10]
	               |(Undocumented)
	00FFh          |[f・1]〜[f・10],[vf・1]〜[vf・5],
	               |[SHIFT]+[f・1]〜[SHIFT]+[f・10],[SHIFT]+[vf・1]〜[vf・5],
	               |[ROLL UP],[ROLL DOWN],[INS],[DEL],[↑],[←],[→],[↓],
	               |[HOME/CLR],[HELP],[SHIFT]+[HOME/CLR],
	               |[CTRL]+[f・1]〜[f・10],[CTRL]+[vf・1]〜[vf・5]
	---------------+---------------------------------------------------


表	[MS-DOSバージョン毎のキー指定値サポート範囲]
	---------------+---+---+---+---+---+---+---+---+-----+
	キー指定値     |MS-DOSバージョン(PS98-XXX) 
	               |111|121|122|123|125|127|129|011|XA125
	---------------+---+---+---+---+---+---+---+---+-----+
	0000〜001Fh    |○ |○ |○ |○ |○ |○ |○ |○ | ○
	0020〜0029h    |× |× |× |× |× |× |× |○ | ○
	002A〜0033h    |× |× |× |× |○ |○ |○ |○ | △
	0034〜0038h    |× |× |× |× |× |× |× |○ | △
	0039h          |× |× |× |× |× |○ |○ |○ | ×
	003Ah          |× |× |× |× |○ |○ |○ |○ | ×
	00FFh          |× |× |× |× |× |× |× |○ | ○
	---------------+---+---+---+---+---+---+---+---+-----+
	* PC-98LT・HAはPS98-127と同じ。
	* MS-DOS 3.3(all), 5.0, 5.0AはPS98-011と同じ。
	* PS98-XA125の△印では、次のようになる。
	  キー指定値002B〜0033hで[CTRL]+[f・1]〜[f・9]が指定される。
	  キー指定値0035〜0038hで[CTRL]+[vf・1]〜[vf・4]が指定される。


表	[プログラマブルキー設定データのバッファ構造]
	(1) キー指定値 0000h
	-------+------------------+--------------------------------------
	オフセット  |キー種別          |キー設定データの大きさ
	-------+------------------+--------------------------------------
	+0000h |[f・1]             |16バイト(15バイトのキー設定データ+00h)
	+0010h |[f・2]             |16バイト(15バイトのキー設定データ+00h)
	+0020h |[f・3]             |16バイト(15バイトのキー設定データ+00h)
	+0030h |[f・4]             |16バイト(15バイトのキー設定データ+00h)
	+0040h |[f・5]             |16バイト(15バイトのキー設定データ+00h)
	+0050h |[f・6]             |16バイト(15バイトのキー設定データ+00h)
	+0060h |[f・7]             |16バイト(15バイトのキー設定データ+00h)
	+0070h |[f・8]             |16バイト(15バイトのキー設定データ+00h)
	+0080h |[f・9]             |16バイト(15バイトのキー設定データ+00h)
	+0090h |[f・10]            |16バイト(15バイトのキー設定データ+00h)
	+00A0h |[SHIFT]+[f・1]     |16バイト(15バイトのキー設定データ+00h)
	+00B0h |[SHIFT]+[f・2]     |16バイト(15バイトのキー設定データ+00h)
	+00C0h |[SHIFT]+[f・3]     |16バイト(15バイトのキー設定データ+00h)
	+00D0h |[SHIFT]+[f・4]     |16バイト(15バイトのキー設定データ+00h)
	+00E0h |[SHIFT]+[f・5]     |16バイト(15バイトのキー設定データ+00h)
	+00F0h |[SHIFT]+[f・6]     |16バイト(15バイトのキー設定データ+00h)
	+0100h |[SHIFT]+[f・7]     |16バイト(15バイトのキー設定データ+00h)
	+0110h |[SHIFT]+[f・8]     |16バイト(15バイトのキー設定データ+00h)
	+0120h |[SHIFT]+[f・9]     |16バイト(15バイトのキー設定データ+00h)
	+0130h |[SHIFT]+[f・10]    |16バイト(15バイトのキー設定データ+00h)
	+0140h |[ROLL UP]         |6バイト(5バイトのキー設定データ+00h)
	+0146h |[ROLL DOWN]       |6バイト(5バイトのキー設定データ+00h)
	+014Ch |[INS]             |6バイト(5バイトのキー設定データ+00h)
	+0152h |[DEL]             |6バイト(5バイトのキー設定データ+00h)
	+0158h |[↑]              |6バイト(5バイトのキー設定データ+00h)
	+015Eh |[←]              |6バイト(5バイトのキー設定データ+00h)
	+0164h |[→]              |6バイト(5バイトのキー設定データ+00h)
	+016Ah |[↓]              |6バイト(5バイトのキー設定データ+00h)
	+0170h |[HOME/CLR]        |6バイト(5バイトのキー設定データ+00h)
	+0176h |[HELP]            |6バイト(5バイトのキー設定データ+00h)
	+017Ch |[SHIFT]+[HOME/CLR]|6バイト(5バイトのキー設定データ+00h)
	-------+------------------+--------------------------------------
	
	(2) キー指定値 0001〜0014h,0020〜0039h
	-------+--------------------------------------
	オフセット  |キー設定データの大きさ
	-------+--------------------------------------
	+0000h |16バイト(15バイトのキー設定データ+00h)
	-------+--------------------------------------
	
	(3) キー指定値 0015〜001Fh
	-------+------------------------------------
	オフセット  |キー設定データの大きさ
	-------+------------------------------------
	+0000h |6バイト(5バイトのキー設定データ+00h)
	-------+------------------------------------
	
	(4) キー指定値 003Ah
	-------+--------------------+--------------------------------------
	オフセット  |キー種別            |キー設定データの大きさ
	-------+--------------------+--------------------------------------
	+0000h |[CTRL]+[XFER]/[NFER]|16バイト(15バイトのキー設定データ+00h)
	+0010h |[CTRL]+[f・1]        |16バイト(15バイトのキー設定データ+00h)
	+0020h |[CTRL]+[f・2]        |16バイト(15バイトのキー設定データ+00h)
	+0030h |[CTRL]+[f・3]        |16バイト(15バイトのキー設定データ+00h)
	+0040h |[CTRL]+[f・4]        |16バイト(15バイトのキー設定データ+00h)
	+0050h |[CTRL]+[f・5]        |16バイト(15バイトのキー設定データ+00h)
	+0060h |[CTRL]+[f・6]        |16バイト(15バイトのキー設定データ+00h)
	+0070h |[CTRL]+[f・7]        |16バイト(15バイトのキー設定データ+00h)
	+0080h |[CTRL]+[f・8]        |16バイト(15バイトのキー設定データ+00h)
	+0090h |[CTRL]+[f・9]        |16バイト(15バイトのキー設定データ+00h)
	+00A0h |[CTRL]+[f・10]       |16バイト(15バイトのキー設定データ+00h)
	-------+--------------------+--------------------------------------
	
	(5) キー指定値 00FFh
	-------+------------------+--------------------------------------
	オフセット  |キー種別          |キー設定データの大きさ
	-------+------------------+--------------------------------------
	+0000h |[f・1]             |16バイト(15バイトのキー設定データ+00h)
	+0010h |[f・2]             |16バイト(15バイトのキー設定データ+00h)
	+0020h |[f・3]             |16バイト(15バイトのキー設定データ+00h)
	+0030h |[f・4]             |16バイト(15バイトのキー設定データ+00h)
	+0040h |[f・5]             |16バイト(15バイトのキー設定データ+00h)
	+0050h |[f・6]             |16バイト(15バイトのキー設定データ+00h)
	+0060h |[f・7]             |16バイト(15バイトのキー設定データ+00h)
	+0070h |[f・8]             |16バイト(15バイトのキー設定データ+00h)
	+0080h |[f・9]             |16バイト(15バイトのキー設定データ+00h)
	+0090h |[f・10]            |16バイト(15バイトのキー設定データ+00h)
	+00A0h |[vf・1]            |16バイト(15バイトのキー設定データ+00h)
	+00B0h |[vf・2]            |16バイト(15バイトのキー設定データ+00h)
	+00C0h |[vf・3]            |16バイト(15バイトのキー設定データ+00h)
	+00D0h |[vf・4]            |16バイト(15バイトのキー設定データ+00h)
	+00E0h |[vf・5]            |16バイト(15バイトのキー設定データ+00h)
	+00F0h |[SHIFT]+[f・1]     |16バイト(15バイトのキー設定データ+00h)
	+0100h |[SHIFT]+[f・2]     |16バイト(15バイトのキー設定データ+00h)
	+0110h |[SHIFT]+[f・3]     |16バイト(15バイトのキー設定データ+00h)
	+0120h |[SHIFT]+[f・4]     |16バイト(15バイトのキー設定データ+00h)
	+0130h |[SHIFT]+[f・5]     |16バイト(15バイトのキー設定データ+00h)
	+0140h |[SHIFT]+[f・6]     |16バイト(15バイトのキー設定データ+00h)
	+0150h |[SHIFT]+[f・7]     |16バイト(15バイトのキー設定データ+00h)
	+0160h |[SHIFT]+[f・8]     |16バイト(15バイトのキー設定データ+00h)
	+0170h |[SHIFT]+[f・9]     |16バイト(15バイトのキー設定データ+00h)
	+0180h |[SHIFT]+[f・10]    |16バイト(15バイトのキー設定データ+00h)
	+0190h |[SHIFT]+[vf・1]    |16バイト(15バイトのキー設定データ+00h)
	+01A0h |[SHIFT]+[vf・2]    |16バイト(15バイトのキー設定データ+00h)
	+01B0h |[SHIFT]+[vf・3]    |16バイト(15バイトのキー設定データ+00h)
	+01C0h |[SHIFT]+[vf・4]    |16バイト(15バイトのキー設定データ+00h)
	+01D0h |[SHIFT]+[vf・5]    |16バイト(15バイトのキー設定データ+00h)
	+01E0h |[ROLL UP]         |6バイト(5バイトのキー設定データ+00h)
	+01E6h |[ROLL DOWN]       |6バイト(5バイトのキー設定データ+00h)
	+01ECh |[INS]             |6バイト(5バイトのキー設定データ+00h)
	+01F2h |[DEL]             |6バイト(5バイトのキー設定データ+00h)
	+01F8h |[↑]              |6バイト(5バイトのキー設定データ+00h)
	+01FEh |[←]              |6バイト(5バイトのキー設定データ+00h)
	+0204h |[→]              |6バイト(5バイトのキー設定データ+00h)
	+020Ah |[↓]              |6バイト(5バイトのキー設定データ+00h)
	+0210h |[HOME/CLR]        |6バイト(5バイトのキー設定データ+00h)
	+0216h |[HELP]            |6バイト(5バイトのキー設定データ+00h)
	+021Ch |[SHIFT]+[HOME/CLR]|6バイト(5バイトのキー設定データ+00h)
	+0222h |[CTRL]+[f・1]      |16バイト(15バイトのキー設定データ+00h)
	+0232h |[CTRL]+[f・2]      |16バイト(15バイトのキー設定データ+00h)
	+0242h |[CTRL]+[f・3]      |16バイト(15バイトのキー設定データ+00h)
	+0252h |[CTRL]+[f・4]      |16バイト(15バイトのキー設定データ+00h)
	+0262h |[CTRL]+[f・5]      |16バイト(15バイトのキー設定データ+00h)
	+0272h |[CTRL]+[f・6]      |16バイト(15バイトのキー設定データ+00h)
	+0282h |[CTRL]+[f・7]      |16バイト(15バイトのキー設定データ+00h)
	+0292h |[CTRL]+[f・8]      |16バイト(15バイトのキー設定データ+00h)
	+02A2h |[CTRL]+[f・9]      |16バイト(15バイトのキー設定データ+00h)
	+02B2h |[CTRL]+[f・10]     |16バイト(15バイトのキー設定データ+00h)
	+02C2h |[CTRL]+[vf・1]     |16バイト(15バイトのキー設定データ+00h)
	+02D2h |[CTRL]+[vf・2]     |16バイト(15バイトのキー設定データ+00h)
	+02E2h |[CTRL]+[vf・3]     |16バイト(15バイトのキー設定データ+00h)
	+02F2h |[CTRL]+[vf・4]     |16バイト(15バイトのキー設定データ+00h)
	+0302h |[CTRL]+[vf・5]     |16バイト(15バイトのキー設定データ+00h)
	-------+------------------+--------------------------------------
	* 設定時、キーに割り当てる設定データが一つのキーに割り当てられた
	  サイズよりも小さいとき、残りの部分は00hで埋める。
	* 設定時、一つのキー設定データ末尾に00h以外の値を書き込んでも、その
	  データは無視される(00hが書かれているのと同じように取り扱われる)。
	* ファンクションキーに設定したデータの先頭6文字は、画面最下行の
	  ファンクション表示部に表示される。ただし、ファンクションキーの
	  データの先頭(1バイト目)にFEhを置いたとき、2バイト目から6バイト
	  目の5バイトのデータは単に表示のみに使用され、キーを押したときに
	  入力される文字は7バイト目以降に設定されたデータになる。1バイト目の
	  FEhは空白として表示される。
	* [CTRL]+[f・1]〜[vf・5]に設定したデータは、INT DCh - Function 0Fh 
	  Subfunction 0000hを実行しなければ入力できない。
	* [CTRL]+[XFER]/[NFER]に設定したデータは、INT DCh - Function 0Fh 
	  Subfunction 0002hを実行しなければ入力できない。


INT DCh - Function 0Ch Subfunction 0100h
分類	拡張MS-DOS
名前	データキー割り当てバッファの内容の取得
対象	MS-DOS 3.1(PS98-011)
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Ch
        AX=0100h
	DS:DX=バッファアドレス(サイズ202hバイト)
出力	レジスタ変化なし
解説  o MS-DOS 3.1(PS98-011)以降のMS-DOSには、文字キー(英数記号カナ)を
	押したとき、任意の文字列に置き換えて入力する機能が備わっている。
	このファンクションは、その設定内容を読み出すことができる。
      o バッファの構造は、[データキー割り当てバッファの構造]を参照。
	DS:DXのオフセット000hには、設定されているデータキーの個数が書き込ま
	れる。オフセット002h以降に、設定されているデータキーの個数分の
	割り当てデータが書き込まれる。最後の割り当てデータの次には、
	00hが書き込まれる。
      o 1個の割り当てデータのオフセット00hには、その割り当てデータの全長が
	書き込まれる。オフセット02hには、データキーのキャラクタコードが
	書き込まれる。オフセット03h以降には、置き換える文字列が書き込まれる。
関連	INT DCh - Function 0Ch Subfunction 0101h
	INT DCh - Function 0Dh Subfunction 0100h
	INT DCh - Function 0Dh Subfunction 0101h


表	[データキー割り当てバッファの構造]
	-------+--------------------------------------
	オフセット  |内容
	-------+--------------------------------------
	+000h  |この後に続く割り当てデータの個数(WORD)
	+002h  |割り当てデータfirst
	   :   |	:
	+xxxh  |割り当てデータlast
	+yyyh  |00h
	-------+--------------------------------------
	* INT DCh - Function 0Dh Subfunction 0100hでデータキーの
	  設定を行うときには、オフセット000hにデータの個数をセット
	  する必要はない。読み出しのときには個数が書き込まれる。


表	[割り当てデータ1個分の構造]
	----------+---------------+--------------------------------------------
	オフセット     |設定値の範囲   |内容
	----------+---------------+--------------------------------------------
	+00h(WORD)|0003〜0012h	  |この割り当てデータの全長(このバイトも含む)
	+02h      |00〜7Eh,A0〜DFh|データキーのキャラクタコード
	+03h      |               |入力される文字列(1〜15バイト)
	  :       |               |(文字列の長さはオフセット+00hの値で決まる)
	+zzh      |               |
	----------+---------------+--------------------------------------------
	* 設定時、割り当てデータの全長は、必ず18バイト以下に設定する。18
	  バイトを超える長さの設定をしてもエラーは返らず設定されてしまうが、
	  あまり長い文字列を設定すると暴走することがある。


INT DCh - Function 0Ch Subfunction 0101h
分類	拡張MS-DOS
名前	データキー割り当てバッファの残り容量の取得
対象	MS-DOS 3.1(PS98-011)
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Ch
        AX=0101h
出力	AX=内部バッファの残り容量(初期値 0200h)
解説  o MS-DOS 3.1(PS98-011)以降のMS-DOSには、文字キー(英数記号カナ)を
	押したとき、任意の文字列に置き換えて入力する機能が備わっている。
	このファンクションは、その設定内容を格納している内部バッファの
	残り容量を読み出すことができる。内部バッファの容量は512バイト。
関連	INT DCh - Function 0Ch Subfunction 0100h
	INT DCh - Function 0Dh Subfunction 0100h
	INT DCh - Function 0Dh Subfunction 0101h


INT DCh - Function 0Dh Subfunction 0000〜00FFh
分類	拡張MS-DOS
名前	キーの設定(プログラマブルキーの設定)
対象	MS-DOS 1.25(PS98-111):IO.SYS
	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS(PS98-127と同じ)
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Dh
	AX=サブファンクション番号(キー指定値)
	DS:DX=データバッファアドレス
出力	レジスタ変化なし
解説  o ファンクションキー、矢印キーなどのプログラマブルキーに、キー設定
	データを設定する。
      o サブファンクション番号(キー指定値)については、[キー指定値と
	対応するキー一覧]を参照。バッファ構造とバッファのサイズは、
	表[プログラマブルキー設定データのバッファ構造]を参照。
      o MS-DOSのバージョンによって、サポートしているサブファンクション
	(キー指定)の範囲が異なる。サポート範囲は表[MS-DOSバージョン毎の
	サブファンクションサポート範囲]を参照。
      u MS-DOS 2.0ではAX>=0020hで画面最下行のファンクション表示の再書き込み
	を行う。ファンクション表示なしのときには書き込みしない。
関連	INT DCh - Function 0Ch


INT DCh - Function 0Dh Subfunction 0100h
分類	拡張MS-DOS
名前	データキー割り当てバッファの内容設定
対象	MS-DOS 3.1(PS98-011)
	MS-DOS 3.3(all)
	MS-DOS 5.0, 5.0A
入力	CL=0Dh
	AX=0100h
	DS:DX=データバッファアドレス
出力	レジスタ変化なし
解説  o MS-DOS 3.1(PS98-011)以降のMS-DOSには、文字キー(英数記号カナ)を
	押したとき、任意の文字列に置き換えて入力する機能が備わっている。
	このファンクションは、そのための設定を行う。
      o このファンクションを実行すると、データキー割り当てバッファ全体を
	置き換える。データを追加する場合は、
	INT DCh - Function 0Dh Subfunction 0101hを利用するか、
	INT DCh - Function 0Ch Subfunction 0100hでバッファにデータを
	読み込んでから、その後ろに新しいデータを追加する必要がある。
      o バッファの構造は、[データキー割り当てバッファの構造]を参照。
	DS:DXのオフセット002h以降に、設定するデータキーの個数分の割り当て
	データを書き込む。最後の割り当てデータの次には、00hを書き込む。
      o 1個の割り当てデータのオフセット00hには、その割り当てデータの全長を
	書き込む。オフセット02hには、データキーのキャラクタコードを
	書き込む。オフセット03h以降には、置き換える文字列を書き込む。
関連	INT DCh - Function 0Ch Subfunction 0100h
	INT DCh - Function 0Ch Subfunction 0101h
	INT DCh - Function 0Dh Subfunction 0101h


INT DCh - Function 0Dh Subfunction 0101h
分類	拡張MS-DOS
名前	データキー割り当てバッファの割り当てエントリを一つ追加
対象	MS-DOS 3.1(PS98-011)
	MS-DOS 3.3(all)
	MS-DOS 5.0, 5.0A
入力	CL=0Dh
        AX=0101h
	DS:DX=データバッファアドレス(割り当てデータ1個分)
出力	AX=0000h
解説  o データキー割り当てバッファに割り当てを一つ追加するときに使用する。
      o バッファの構造は、[割り当てデータ1個分の構造]を参照。
	DS:DXのオフセット00hには、割り当てデータの全長を書き込む。オフセット
	02hには、データキーのキャラクタコードを書き込む。オフセット03h以降
	には、置き換える文字列を書き込む。
      o データキーの割り当ては以下のエスケープシーケンスでも行える。
	---------------------------------------------
	エスケープシーケンス
	---------------------------------------------
	ESC+"["+<文字列>+"p"
	---------------------------------------------
	* <文字列>を指定するには、文字を引用符("または')で括って
	  直接記述する方法と、10進数のアスキーコードを;で区切って
	  並べる方法、およびそれらを混在させる方法がある。
	  以下の例は、どれも同じ設定を行っている。
	  (例:^[["!ABC"p,^[[33;65;66;67p,^[[21;"ABCDE"p)
	* <文字列>の1文字目がデータキーのキャラクタコード、
	  2文字目以降が入力される文字列(1〜15バイト)。
      u MS-DOSプログラマーズリファレンスマニュアルには正確な使用方法が
	記載されていない。
      u MS-DOS 3.1(PS98-011)では、このファンクションは正常動作しない。
	MS-DOS 3.3, 3.3A, 3.3B, 3.3Cでは、以下のようになる。
	複数のデータキーが登録されているとき、最後に登録した以外のデータ
	キーを再登録すると、データキー割当バッファの内容が破壊され、
	登録内容が無効になる。このようになったら、以後このファンクションで
	データキーへの登録は行えない。INT DCh - Function 0Dh Subfunction 0102h
	を実行してバッファの初期化を行えば再度登録できるようになる。
	MS-DOS 3.3D, 5.0以降では、このようなことは起らない。
関連	INT DCh - Function 0Ch Subfunction 0100h
	INT DCh - Function 0Ch Subfunction 0101h
	INT DCh - Function 0Dh Subfunction 0100h


INT DCh - Function 0Dh Subfunction 0102h
分類	拡張MS-DOS
名前	データキー割り当てバッファのクリア
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Dh
        AX=0102h
出力	レジスタ変化なし
解説  o データキー割り当てバッファの登録内容を全てクリアする。
関連	INT DCh - Function 0Dh Subfunction 0100h
	INT DCh - Function 0Dh Subfunction 0101h
	INT DCh - Function 0Dh Subfunction 0102h


INT DCh - Function 0Eh Subfunction 00h(ノーマル・ハイレゾ)
分類	拡張MS-DOS
名前	RS-232C受信データ長の取得
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
	(ノーマル・ハイレゾモード両用MS-DOS)
入力	CL=0Eh
	DL=チャネル・機能指定
	    00h: チャネル0(本体内蔵RS-232C)
            10h: チャネル1(RS-232C拡張回線)
            20h: チャネル2(RS-232C拡張回線)
出力	[存在するチャネルを指定した時]
	AX=受信バッファ内のデータのバイト数
	[存在しないチャネルを指定した時]
	AX=FFFFh
解説  o RS-232C受信バッファ内にあるデータのバイト数を返す。
      u MS-DOS 3.1(PS98-011)では、RSDRV.SYSを組み込まないと本ファンクションは
	無動作になる(AXは無変化)。
      u	MS-DOS 3.3(PS98-013)以降では、チャネル0を指定したときRSDRV.SYSの
	組み込みチェックを行わない。このため、RSDRV.SYSが組み込まれていない
	とき、ノーマルモードでチャネル0を指定してこのファンクションを実行する
	と、無意味な処理を行う。ハイレゾモードでチャネル0を指定してこの
	ファンクションを実行すると、未初期化状態でINT 19h - Function 02h(BIOS)
	を実行することになる。
      o RS-232C拡張インターフェースボードが実装されていないとき、チャネル
	1,2を指定するとAX=FFFFhで戻る。ノーマルモードで、RS-232C拡張
	インターフェースボード上のBIOS ROMがKILLされている場合も同様。
      u 主な処理内容は次の通り。
	ノーマルモードではINT 19h,D4h,D5h - Function 04h(RSDRV)を、ハイレゾ
	モードではINT 19h - Function 02h(BIOS)を実行する。
関連	INT DCh - Function 0Eh Subfunction 01h


INT DCh - Function 0Eh Subfunction 00h(ノーマル)
分類	拡張MS-DOS
名前	RS-232C受信データ長の取得
対象	MS-DOS 1.25(PS98-111):IO.SYS
	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(PS98-125・127・129):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	(ノーマルモード専用MS-DOS)
入力	CL=0Eh
	DL=00
出力	AX=受信バッファ内のデータのバイト数
解説  o RS-232C受信バッファ内にあるデータのバイト数を返す。
      o PS98-127・129では、RSDRV.SYSを組み込まないと本ファンクションは無動作に
	なる(AXは無変化)。
      o この項目の対象になっているノーマルモード専用のMS-DOSは、チャネル0
	のみサポートしている。DL≠00hで実行したとき、MS-DOS 1.25ではAXは
	無変化、それ以外ではAX=0000hが返る。
      u 主な処理内容は次の通り。
	INT 19h - Function 04h(RSDRV)を実行する。
関連	INT DCh - Function 0Ah(ノーマル)


INT DCh - Function 0Eh Subfunction 00h(ハイレゾ)
分類	拡張MS-DOS
名前	RS-232C受信データ長の取得
対象	MS-DOS 2.0(PS98-XA121・XL121):IO.SYS
	MS-DOS 3.1(PS98-XA125・XL125):IO.SYS
	(ハイレゾモード専用MS-DOS)
入力	CL=0Eh
	DL=チャネル指定
	    00h: チャネル0(本体内蔵RS-232C)
            10h: チャネル1(RS-232C拡張回線)
            20h: チャネル2(RS-232C拡張回線)
出力	AX=受信バッファ内のデータのバイト数
解説  o RS-232C受信バッファ内にあるデータのバイト数を返す。
      o PS98-XL121・XL125では、RSDRV.SYSを組み込まないと本ファンクションは
	無動作になる(AXは無変化)。
      u 主な処理内容は以下の通り。
	INT 19h - Function 02h(BIOS)を実行し、得られたCXの値を返す。
	RS-232C拡張インターフェースボードが実装されているかどうかなどの
	チェックは行わない。
関連	INT DCh - Function 0Ah(ノーマル)


INT DCh - Function 0Eh Subfunction 01h
分類	拡張MS-DOS
名前	RS-232Cポートの初期化
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Eh
	DL=チャネル・機能指定
	    01h チャネル0(本体内蔵RS-232C)
            11h チャネル1(RS-232C拡張回線)
            21h チャネル2(RS-232C拡張回線)
	BH=通信パラメータ指定
	    bit 7,6:ストップビット長
		11b=2ビット
		01b=1ビット
	    bit 5  :パリティ指定
		1=偶数
		0=奇数
	    bit 4  :パリティ指定
		1=あり
		0=なし
	    bit 3,2:データビット長
		11b=8ビット
		10b=7ビット
	    bit 1  :0
	    bit 0  :Xフローコントロール
		1=あり
		0=なし
	BL=通信速度指定
	    bit 7〜4:0000bを設定
	    bit 3〜0:通信速度
		1001b=19200bps■19200bps対応機のみ
		1000b=9600bps
		0111b=4800bps
		0110b=2400bps
		0101b=1200bps
		0100b= 600bps
		0011b= 300bps
		0010b= 150bps
		0001b=  75bps
		0000b=  無効
		* 通信速度はチャネル0でのみ指定できる。
出力	AX=リターンコード
	    0000h 正常終了
            FFFFh 異常終了(拡張RS-232Cボードが実装されていない)
解説  o RS-232Cポートのハードウェアとワークエリアを初期化する。
	以降、AUX,AUX1,AUX2デバイスを使用した入出力が可能になる。
      o 受信バッファは256バイト確保される。
      u 19200bps対応機かどうかの判別は、F8E8:0002h(ノーマル)または
	FFE8:0002h(ハイレゾ)を参照して行う。
	本体が19200bps対応機ならば、98ハイレゾボード(PC-9821A-E02)のハイレゾ
	モードでも、BIOSで19200bpsが使用できる。
      u MS-DOS 3.1(PS98-011)では、RSDRV.SYSを組み込まないと本ファンクションは
	無動作になる(AXは無変化)。
      u	MS-DOS 3.3(PS98-013)以降では、ノーマルモードでチャネル0を指定した
	ときRSDRV.SYSの組み込みチェックを行わない。このため、RSDRV.SYSが
	組み込まれていないとき、ノーマルモードでチャネル0を指定して
	このファンクションを実行すると、無意味な処理を行う。
      o RS-232C拡張インターフェースボードが実装されていないとき、チャネル
	1,2を指定するとAX=FFFFhで戻る。ノーマルモードで、RS-232C拡張
	インターフェースボード上のBIOS ROMがKILLされている場合も同様。
      u 主な処理内容は次の通り。
	ノーマルモードでは、INT 19h,D4h,D5h - Function 00h(RSDRV)を実行する。
	ハイレゾモードでは、チャネル0が指定されたときは内部的にINT DCh - 
	Function 0Ahを、チャネル1,2が指定されたときはINT 19h - Function 00h
	(BIOS)を実行する。
      u MS-DOS 5.0Aの一部バージョン(PC-9821Af・Ne, PC-9801NX/C・P付属版など)
	では、SPEED.EXEを実行してもRS-232C割り込み(INT 0Ch)が割り込み
	コントローラによってマスクされたままになる場合がある。
	このファンクションを直接実行した場合は、そのようなことは起らない。
関連	INT DCh - Function 0Eh Subfunction 00h
	INT DCh - Function 0Eh Subfunction 06h
	0060:0068h
	0060:17EEh
	F8E8:0002h[ノーマル]
	FFE8:0002h[ハイレゾ]


INT DCh - Function 0Eh Subfunction 06h
分類	拡張MS-DOS
名前	RS-232Cポートのプロトコル読み出し
	Undocumented
対象	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Eh
	DL=チャネル・機能指定
	    06h チャネル0(本体内蔵RS-232C)
            16h チャネル1(RS-232C拡張回線)
            26h チャネル2(RS-232C拡張回線)
出力	AX=リターンコード
	    0000h 正常終了
            FFFFh 異常終了(拡張RS-232Cボードが実装されていない)
	BH=通信パラメータ
	    * INT DCh - Function 0Eh Subfunction 01hと同じ
	BL=通信速度
	    * INT DCh - Function 0Eh Subfunction 01hと同じ
解説  o INT DCh - Function 0Eh Subfunction 01hで設定したプロトコルを読み出す。
      u MS-DOS 3.3(PS98-013)以降では、チャネル0を指定したときRSDRV.SYSの
	組み込みチェックを行わない。このため、RSDRV.SYSが組み込まれていない
	ときでも、チャネル0を指定してこのファンクションを実行すると、
	0060:0068hの値が読み出される。その内容は、MS-DOS起動時にメモリスイッチ
	1,2からコピーされたものである。
      u RS-232C初期化前にこのファンクションを実行した場合、チャネル0を
	指定すると、0060:0068hの値(メモリスイッチ1,2からコピーされた
	ままの値)が読み出される。チャネル1,2を指定すると、0000hが読み
	出される。
      u	ハイレゾモードで、RS-232Cチャネル0をINT DCh - Function 0Ahで
	初期化した場合、通信パラメータ等をワークエリア(0060:0068h)に
	保存しないため、このファンクションで正しくプロトコルを読み出すことは
	できない。
      u 主な処理内容は次の通り。
	チャネル0が指定されたときは0060:0068hから、チャネル1が指定された
	ときは0060:17EEh,17EFhから、チャネル2が指定されたときは
	0060:17F0h,17F1hから読み出した値を返す。
関連	INT DCh - Function 0Eh Subfunction 01h
	0060:0068h
	0060:17EEh
	0060:17F0h


INT DCh - Function 0Eh Subfunction 07h
分類	拡張MS-DOS
名前	拡張RS-232Cボードの有無の調査
	Undocumented
対象	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Eh
	DL=07h
出力	AX=リターンコード
	    0000h 拡張RS-232Cボードが実装されている
            FFFFh 拡張RS-232Cボードが実装されていない
解説  o 拡張RS-232Cボードが実装されているかどうかを調べる。
	RSDRV.SYSが組み込まれていなくても動作する。
      u 主な処理内容は次の通り。
	I/O 00B3hからリードしてFFh以外の値だったら、拡張RS-232Cボードが
	実装されていると判断している。
	実際には、DLの上位4ビットの値は任意。
関連	I/O 00B3h


INT DCh - Function 0Fh Subfunction 0000h,0001h
分類	拡張MS-DOS
名前	[CTRL]+ファンクションキーのソフトキー化/解除
対象	MS-DOS 3.1(PS98-125・127・129・011・XA125):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Fh
	AX=サブファンクション番号
	    0000h: [CTRL]+ファンクションキー入力をアプリケーションから取得可能
            0001h: [CTRL]+ファンクションキー操作をMS-DOSで占有(デフォルト)
出力	レジスタ変化なし
解説  o [CTRL]+ファンクションキーを押したとき、アプリケーションがキー入力を
	取得できる状態にするか、MS-DOSが占有して画面行数切り替えなどを行う
	状態にするかを設定する。
      o [CTRL]+ファンクションキー入力をアプリケーションから取得可能にした
	ときは、INT DCh - Function 0Dhで設定した文字列がアプリケーションに
	入力される。
      o [CTRL]+ファンクションキー操作をMS-DOSが占有した状態でのキーの機能は
	以下のようになる。
	---------------+------------------------------
	キー           |機能
	---------------+------------------------------
	[CTRL]+[f・4]   |グラフ文字/漢字表示モード切換
	[CTRL]+[f・5]   |16進入力
	[CTRL]+[f・6]   |行数切換
	[CTRL]+[f・7]   |ファンクションキー表示切換
	[CTRL]+[f・8]   |画面クリア
	[CTRL]+[f・9]   |画面スクロール速度切換
	---------------+------------------------------
関連	0060:010Ch bit 0
	INT DCh - Function 0Fh Subfunction 8000h


INT DCh - Function 0Fh Subfunction 0002h,0003h
分類	拡張MS-DOS
名前	[CTRL]+[XFER]・[NFER]のソフトキー化/解除
	Undocumented
対象	MS-DOS 3.1(PS98-125・127・129・011):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Fh
	AX=サブファンクション番号
	    0002h: [CTRL]+[XFER]・[NFER]入力をアプリケーションから取得可能
            0003h: [CTRL]+[XFER]・[NFER]入力をMS-DOSで占有(デフォルト)
出力	レジスタ変化なし
解説  o 日本語入力FEPを組み込まない環境で、[CTRL]+[XFER]または[CTRL]+[NFER]を
	押したとき、16進漢字入力を行う状態にするか、
	アプリケーションがキー入力を取得できる状態にするかを設定する。
	ただし、日本語入力FEPが組み込まれていると、このファンクションによる
	設定を行ってもアプリケーションから[CTRL]+[XFER]・[NFER]を取得できない。
      o [CTRL]+[XFER]・[NFER]入力をアプリケーションから取得可能にした
	ときは、INT DCh - Function 0Dh Subfunction 0039hで設定した文字列が
	アプリケーションに入力される。
      o [CTRL]+[XFER]と[CTRL]+[NFER]の入力を区別することはできない。
関連	0060:010Ch bit 1
	INT DCh - Function 0Dh Subfunction 0039h
	INT DCh - Function 0Fh Subfunction 8002h


INT DCh - Function 0Fh Subfunction 8000h
分類	拡張MS-DOS
名前	[CTRL]+ファンクションキーのソフトキー化状態読み出し
対象	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Fh
	AX=8000h
出力	AX=[CTRL]+ファンクションキー状態
	    0000h [CTRL]+ファンクションキー入力をアプリケーションから取得可能
	    0001h [CTRL]+ファンクションキー操作をMS-DOSで占有
解説  o INT DCh - Function 0Fh Subfunction 0000h,0001hで設定した状態を
	読み出す。
関連	0060:010Ch bit 0
	INT DCh - Function 0Fh Subfunction 0000h,0001h


INT DCh - Function 0Fh Subfunction 8002h
分類	拡張MS-DOS
名前	[CTRL]+[XFER]・[NFER]のソフトキー化/解除状態取得
	Undocumented
対象	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=0Fh
	AX=8002h
出力	AX=[CTRL]+[XFER]・[NFER]のソフトキー化/解除状態
	    0000h: [CTRL]+[XFER]・[NFER]入力をアプリケーションから取得可能
	    0001h: [CTRL]+[XFER]・[NFER]入力をMS-DOSで占有(デフォルト)
解説  o INT DCh - Function 0Fh Subfunction 0002h,0003hで設定した状態を
	読み出す。
関連	0060:010Ch bit 1
	INT DCh - Function 0Fh Subfunction 0002h,0003h


INT DCh - Function 10h Subfunction 00h
分類	拡張MS-DOS
名前	直接コンソール出力−1バイトの画面出力
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=00h
	DL=出力するキャラクタ
出力	レジスタ変化なし
解説  o テキスト画面に1バイトの文字データを出力する。
	2バイト文字は1バイト目、2バイト目の順に出力する。
関連	


INT DCh - Function 10h Subfunction 01h
分類	拡張MS-DOS
名前	直接コンソール出力−文字列の画面出力
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=01h
	DS:DX=文字列の先頭アドレス(文字列の最後は'$')
出力	レジスタ変化なし
解説  o テキスト画面に文字列を出力する。
関連	


INT DCh - Function 10h Subfunction 02h
分類	拡張MS-DOS
名前	直接コンソール出力−文字アトリビュートの設定
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=02h
	DL=アトリビュート情報(VRAM上の表現と同じ)
	■[PC-H98]拡張アトリビュートモード時(Undocumented)
	DX=アトリビュート情報(VRAM上の表現と同じ)
出力	レジスタ変化なし
解説  o 文字表示するときのアトリビュートを設定する。
      u MS-DOS 3.3C以降では、PC-H98の拡張アトリビュートモードをサポート
	している。拡張アトリビュートモードのときは、DXレジスタで16ビットの
	アトリビュートを指定する。
関連	0060:011Dh
	0060:013Ch


INT DCh - Function 10h Subfunction 03h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソル位置の設定
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=03h
	DH=行位置
	DL=桁位置
出力	レジスタ変化なし
解説  o カーソル位置を設定する。文字表示はカーソル位置に行われる。
	位置指定は画面左上を(0,0)とする。
      u 最大行数,最大桁数を超えた値が指定された場合、以下のような動作をする。
	最大値〜DFh : 最大値とみなす
	E0〜FFh     : 0とみなす
関連	


INT DCh - Function 10h Subfunction 04h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソルを1行下に移動
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=04h
出力	レジスタ変化なし
解説  o カーソルを1行下に移動する。桁位置は変わらない。
	カーソルが最下行にあったときは、画面全体がスクロールアップする。
関連	


INT DCh - Function 10h Subfunction 05h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソルを1行上に移動
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=05h
出力	レジスタ変化なし
解説  o カーソルを1行上に移動する。桁位置は変わらない。
	カーソルが最上行にあったときは、画面全体がスクロールダウンする。
関連	


INT DCh - Function 10h Subfunction 06h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソルを指定行数分上に移動
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=06h
	DL=移動行数
出力	レジスタ変化なし
解説  o カーソルを、DLで指定した行数分上に移動する。桁位置は変わらない。
	カーソルを移動した結果が最上行を超えるとき、カーソルは最上行に
	設定される。このとき、画面スクロールは起らない。
      o DL=0のとき、1が指定されたときと同じ動作をする。
関連	


INT DCh - Function 10h Subfunction 07h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソルを指定行数分下に移動
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=07h
	DL=移動行数
出力	レジスタ変化なし
解説  o カーソルを、DLで指定した行数分下に移動する。桁位置は変わらない。
	カーソルを移動した結果が最下行を超えるとき、カーソルは最下行に
	設定される。このとき、画面スクロールは起らない。
      o DL=0のとき、1が指定されたときと同じ動作をする。
関連	


INT DCh - Function 10h Subfunction 08h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソルを指定桁数分右に移動
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=08h
	DL=移動桁数
出力	レジスタ変化なし
解説  o カーソルを、DLで指定した桁数分右に移動する。行位置は変わらない。
	カーソルを移動した結果が右端を超えるとき、カーソルは右端に
	設定される。
      o DL=0のとき、1が指定されたときと同じ動作をする。
関連	


INT DCh - Function 10h Subfunction 09h
分類	拡張MS-DOS
名前	直接コンソール出力−カーソルを指定桁数分左に移動
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=09h
	DL=移動桁数
出力	レジスタ変化なし
解説  o カーソルを、DLで指定した桁数分左に移動する。行位置は変わらない。
	カーソルを移動した結果が左端を超えるとき、カーソルは左端に
	設定される。
      o DL=0のとき、1が指定されたときと同じ動作をする。
関連	


INT DCh - Function 10h Subfunction 0Ah
分類	拡張MS-DOS
名前	直接コンソール出力−画面クリア
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=0Ah
	DL=機能指定
	    00h カーソル位置から最下行右端までをクリア
		(カーソル位置は変化しない)
	    01h 最上行左端からカーソル位置までをクリア
		(カーソル位置は変化しない)
	    02h 画面全体をクリア
		(カーソルは(0,0)に移動する)
出力	レジスタ変化なし
解説  o 画面の指定された部分をクリアする。
関連	


INT DCh - Function 10h Subfunction 0Bh
分類	拡張MS-DOS
名前	直接コンソール出力−行クリア
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=0Bh
	DL=機能指定
	    00h カーソル位置から行の右端までをクリア
	    01h 行の左端からカーソル位置までをクリア
	    02h カーソル位置の行全体をクリア
出力	レジスタ変化なし
解説  o 画面の指定された部分をクリアする。カーソル位置は変化しない。
関連	


INT DCh - Function 10h Subfunction 0Ch
分類	拡張MS-DOS
名前	直接コンソール出力−カーソル位置に指定行数分挿入
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=0Ch
	DL=挿入する行数
出力	レジスタ変化なし
解説  o カーソル位置以下の行(カーソル行含む)をDLで指定した行数分
	スクロールダウンし、空白行を挿入する。カーソルは同一行の左端に
	移動する。
	DL=0のとき、1が指定されたものとして処理される。
関連	


INT DCh - Function 10h Subfunction 0Dh
分類	拡張MS-DOS
名前	直接コンソール出力−カーソル行から指定行分削除
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=0Dh
	DL=削除する行数
出力	レジスタ変化なし
解説  o カーソル位置以下の行(カーソル行含む)をDLで指定した行数分
	削除し、その次の行をカーソル位置までスクロールアップする。
	カーソルは同一行の左端に移動する。
	DL=0のとき、1が指定されたものとして処理される。
関連	


INT DCh - Function 10h Subfunction 0Eh
分類	拡張MS-DOS
名前	直接コンソール出力−漢字・グラフモード切換
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=0Eh
	DL=機能指定
	    00h シフトJIS漢字表示モード(デフォルト)
	    03h グラフィック文字表示モード
出力	レジスタ変化なし
解説  o シフトJIS漢字を表示するモードとグラフィック文字を表示するモードの
	切換を行う。
      o 画面に81〜9Fh,E0〜FChの範囲の値を出力したとき、シフトJIS漢字表示
	モードでは2バイト文字の1バイト目として取り扱う。グラフィック文字
	表示モードではグラフィック文字を表示する。
	DLに00h, 03h以外の値を指定すると無視される。
      o モードの切換は以下のエスケープシーケンスでも行える。
	---------------+-----------------------------
	エスケープシーケンス    |モード
	---------------+-----------------------------
	ESC+")0"       |シフトJIS漢字表示モード
	ESC+")3"       |グラフィック文字表示モード
	---------------+-----------------------------
      o モードの切換はキーボードでも行える。
	キーボードから[CTRL]+[f・4]を入力すると、モードがトグル切換する。
関連	0060:008Ah


INT DCh - Function 10h Subfunction 0F〜FFh
分類	拡張MS-DOS
名前	直接コンソール出力−実行禁止
	Undocumented
対象	MS-DOS 2.0(all):IO.SYS
	MS-DOS 3.1(all):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=10h
	AH=0F〜FFh
出力	レジスタ変化なし
解説  u AH=0F〜FFhで実行すると暴走するので注意。
関連	


INT DCh - Function 11h Subfunction 0000h,0001h
分類	拡張MS-DOS
名前	プリンタモードの変更−漢字:ANK比率の指定
対象	MS-DOS 3.1(PS98-127・129・011・XA125):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=11h
	AX=漢字:ANK比率の指定
	    0000h 漢字:ANKの文字幅比を1.5:1にする
	    0001h 漢字:ANKの文字幅比を  2:1にする(デフォルト)
出力	レジスタ変化なし
解説  o プリンタに文字出力するとき、漢字がANK文字の2倍の文字間隔になる
	ような空白を入れるかどうかを設定する。漢字:ANKの文字幅比を1.5:1に
	設定すると空白が入らない。
      o このファンクション自体は、PRINT.SYSが組み込まれていなくても
	実行できる。
関連	INT DCh - Function 11h Subfunction 8000h
	0060:1E57h bit 0


INT DCh - Function 11h Subfunction 0010h,0011h
分類	拡張MS-DOS
名前	プリンタモードの変更−漢字横書き・縦書き指定
	Undocumented
対象	MS-DOS 3.1(PS98-127・129・011・XA125):IO.SYS
	MS-DOS 3.1(PC-98LT・HA):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=11h
	AX=サブファンクション番号
	    0010h 漢字縦書き指定
	    0011h 漢字横書き指定(デフォルト)
出力	レジスタ変化なし
解説  o プリンタに漢字を出力するとき、縦書き指定(エスケープシーケンス
	"^[K"で漢字イン)するか、横書き指定(エスケープシーケンス"^[t"で
	漢字イン)するかを設定する。
	ANK文字(1バイト文字)は常に横書きになる。
      o このファンクション自体は、PRINT.SYSが組み込まれていなくても
	実行できる。
関連	INT DCh - Function 11h Subfunction 8010h
	0060:1E57h bit 1


INT DCh - Function 11h Subfunction 0020h,0021h
分類	拡張MS-DOS
名前	プリンタモードの変更−[CTRL]+[P]・[N]動作指定
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=11h
	AX=サブファンクション番号
	    0020h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力しない
	    0021h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力する
		  (デフォルト)
出力	レジスタ変化なし
解説  o 偶数回目の[CTRL]+[P]・[N]押下時に、プリンタにCR/LFコードを出力するか
	どうかを設定する。
      o	[CTRL]+[P]・[N]を押下すると、画面出力と同時にプリンタにも出力する
	モードのON/OFFがトグルで行われる。デフォルトでは、このモードがOFFに
	なるタイミングで、プリンタにCR/LFを出力する。このため、MS-DOS経由では
	一切画面出力を行わないアプリケーションでも、キー入力でMS-DOSを利用
	すると偶数回目の[CTRL]+[P]・[N]の入力でプリンタにも出力が行われて
	しまうことがある。CR/LFを出力しないモードに設定しておけば、
	余計なプリンタ出力を防ぐことができる。
      o このファンクション自体は、PRINT.SYSが組み込まれていなくても
	実行できる。
関連	INT DCh - Function 11h Subfunction 8020h
	0060:1E57h bit 7


INT DCh - Function 11h Subfunction 8000h
分類	拡張MS-DOS
名前	プリンタモードの取得−漢字:ANK比率の取得
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=11h
	AX=8000h 
出力	AX=リターンコード
            0000h 漢字:ANKの文字幅比=1.5:1
	    0001h 漢字:ANKの文字幅比=  2:1(デフォルト)
解説  o 漢字:ANK比率の状態を取得する。
      o このファンクション自体は、PRINT.SYSが組み込まれていなくても
	実行できる。
関連	INT DCh - Function 11h Subfunction 0000h,0001h
	0060:1E57h bit 0


INT DCh - Function 11h Subfunction 8010h
分類	拡張MS-DOS
名前	プリンタモードの取得−漢字横書き・縦書き指定の取得
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=11h
	AX=8010h
出力	AX=リターンコード
            0000h 漢字縦書き指定
	    0001h 漢字横書き指定(デフォルト)
解説  o 漢字横書き・縦書き指定の状態を取得する。
      o このファンクション自体は、PRINT.SYSが組み込まれていなくても
	実行できる。
関連	INT DCh - Function 11h Subfunction 0010h,0011h
	0060:1E57h bit 1


INT DCh - Function 11h Subfunction 8020h
分類	拡張MS-DOS
名前	プリンタモードの取得−[CTRL]+[P]・[N]動作指定の取得
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=11h
	AX=8020h
出力	AX=リターンコード
            0000h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力しない
	    0001h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力する
		  (デフォルト)
解説  o [CTRL]+[P]・[N]の動作の設定状態を取得する。
      o このファンクション自体は、PRINT.SYSが組み込まれていなくても
	実行できる。
関連	INT DCh - Function 11h Subfunction 0020h,0021h
	0060:1E57h bit 7


INT DCh - Function 12h
分類	拡張MS-DOS
名前	MS-DOS製品バージョン・機種情報の取得
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=12h
出力	AX=製品番号
	DX=機種情報
解説  o MS-DOSの製品番号と機種情報を読み出す。
	「MS-DOSバージョン−製品番号−内部リビジョン番号の対応」、
	「機種情報の意味」を参照。
      o 本ファンクションをサポートしているMS-DOSでは必ずAX≠0000hで戻るので、
	AX=0000hでこのファンクションを実行して、AX=0000hで戻ったら
	本ファンクション非サポートのMS-DOSであると判断できる。
      u DXに返される機種情報は、MS-DOSのバージョンにより判別できる範囲が
	異なるなどするため、使用しないほうが良い。
関連	0060:0020h
	INT DCh - Function 15h Subfunction 0000h


表	MS-DOSバージョン−製品番号−内部リビジョン番号の対応
	-------------+-----+--------+------------------------------------
	MS-DOS	     |製品 |内部Revi|備考
	Version      |番号 |sion番号|
	-------------+-----+--------+------------------------------------
	3.1(PS98-011)|0001h| -      |
	3.3	     |0002h| -      |
	3.3A	     |0002h| -      |
	3.3B	     |0002h| -      |
	3.3C	     |0003h| -      |
	3.3D	     |0004h| -      |
	3.3D-R	     |0005h| -      |PC-9801NL ROM DISK
	5.0	     |0101h| 01h    |初期出荷版
	5.0	     |0101h| 03h    |改訂版
	5.0A	     |0102h| 01h    |初期出荷版
	5.0A-H	     |0102h| 01h    |PC-9801NA(HDモデル付属)
	             |     |        |初期出荷版との差異はタイトル文字のみ
	5.0A-H	     |0102h| 03h    |1.44MB FDサポート
	             |     |        |PC-9821Ap(FDモデル付属)
	             |     |        |PC-9801NS/R付属
	5.0A-H	     |0104h| 04h    |PC-9821Ap(HDモデル付属)
	             |     |        |内部Revision 03hとの差異は、
	             |     |        |製品番号・内部Revision番号のみ
	-------------+-----+--------+------------------------------------
	* 製品番号とは、INT DCh - Function 12h実行後のAXの値
	* 内部Revision番号とは、INT DCh - Function 15h Subfunction 0000h
	  実行後のALの値


表	機種情報の意味
	-----+-----------------------------------------------------------------
	値   |MS-DOS 3.1 (PS98-011)
	-----+-----------------------------------------------------------------
	0000h|PC-9801無印
	0001h|PC-9801E・F・M
	0002h|PC-9801U
	0003h|PC-9801無印・E・F・M・U以外のノーマルモード
	0100h|PC-98XA
	0101h|PC-98XA以外のハイレゾモード
	-----+-----------------------------------------------------------------
	
	-----+-----------------------------------------------------------------
	値   |MS-DOS 3.3, 3.3A (PS98-013, PS98-015)
	-----+-----------------------------------------------------------------
	0000h|PC-9801無印
	0001h|PC-9801E・F・M
	0002h|PC-9801U
	0003h|PC-9801無印・E・F・M・U以外のノーマルモード
	     | 	0000:0481h bit 7,6 = 00bの場合
	0004h|PC-9801無印・E・F・M・U以外のノーマルモード
	     |  0000:0481h bit 7,6 = 01bの場合
	0100h|PC-98XA
	0101h|PC-98XA以外のハイレゾモード
	1000h|0000:0481h = 1xxxx001b のときのノーマルモード
	1100h|0000:0481h = 1xxxx001b のときのハイレゾモード
	1001h|0000:0481h = 1xxxx010b のときのノーマルモード
	1101h|0000:0481h = 1xxxx010b のときのハイレゾモード
	1002h|0000:0481h = 1xxxx100b のときのノーマルモード
	1102h|0000:0481h = 1xxxx100b のときのハイレゾモード
	1002h|0000:0481h = 1xxxxxxxb で上記以外
	-----+-----------------------------------------------------------------
	* 0000:0481h bit 7,6は、のちに0000:0458h bit 7,6に変更されたと
	  考えられる。0000:0458h bit 7はNESAフラグ、bit 6はマルチメディア
	  アーキテクチャフラグ(PC-98GSを表す)である。ただし、PC-H98(NESA),
	  PC-98GSともMS-DOS 3.3A出荷時には発表されていない。
	
	-----+-----------------------------------------------------------------
	値   |MS-DOS 3.3B (PS98-017)
	-----+-----------------------------------------------------------------
	0000h|PC-9801無印
	0001h|PC-9801E・F・M
	0002h|PC-9801U
	0003h|PC-9801無印・E・F・M・U,PC-98GS,PC-H98以外のノーマルモード
	0004h|PC-98GS
	0100h|PC-98XA
	0101h|PC-98XA,PC-H98以外のハイレゾモード
	1004h|PC-H98ノーマル
	1101h|PC-H98ハイレゾ
	-----+-----------------------------------------------------------------
	* MS-DOS 3.3B出荷時には、PC-H98,PC-98GSとも発表されていない。
	
	-----+-----------------------------------------------------------------
	値   |MS-DOS 3.3C, 3.3D (PS98-019, PS98-1002)
	-----+-----------------------------------------------------------------
	0000h|PC-9801無印
	0001h|PC-9801E・F・M
	0002h|PC-9801U
	0003h|PC-9801無印・E・F・M・U,PC-98GS,PC-H98以外のノーマルモード
	0004h|PC-98GS
	0100h|PC-98XA
	0101h|PC-98XA,PC-H98以外のハイレゾモード
	1004h|PC-H98ノーマルモード (実際のCPUがi486以外)
	1005h|PC-H98ノーマルモード (実際のCPUがi486)
	1101h|PC-H98ハイレゾモード (実際のCPUがi486以外)
	1102h|PC-H98ハイレゾモード (実際のCPUがi486)
	-----+-----------------------------------------------------------------
	* Pentiumプロセッサ, ODP DX2等も、「実際のCPUがi486以外」に含まれる。
	
	-----+-----------------------------------------------------------------
	値   |MS-DOS 5.0, 5.0A (PS98-1003-x1, PS98-1003-x2)
	-----+-----------------------------------------------------------------
	0000h|PC-9801無印
	0001h|PC-9801E・F・M
	0002h|PC-9801U
	0003h|PC-9801無印・E・F・M・U,PC-H98以外のノーマルモード
	     |  0000:0481h bit 6 = 0の場合
	0004h|PC-9801無印・E・F・M・U,PC-H98以外のノーマルモード
	     |  0000:0481h bit 6 = 1の場合
	0100h|PC-98XA
	0101h|PC-98XA,PC-H98以外のハイレゾモード
	1004h|PC-H98ノーマルモード (実際のCPUがi486以外)
	1005h|PC-H98ノーマルモード (実際のCPUがi486)
	1101h|PC-H98ハイレゾモード (実際のCPUがi486以外)
	1102h|PC-H98ハイレゾモード (実際のCPUがi486)
	-----+-----------------------------------------------------------------
	* 本来は、0000:0481h bit 6ではなく、0000:0458h bit 6(マルチメディア
	  アーキテクチャフラグ=PC-98GS)をチェックしなければならない。
	* Pentiumプロセッサ, ODP DX2等も、「実際のCPUがi486以外」に含まれる。


INT DCh - Function 12h(LT・HA)
分類	拡張MS-DOS
名前	ディスク入れ換え表示の置き換え
	Undocumented
対象	MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力	CL=12h
	AX=機能指定
	    0000h: ディスク入れ換え表示をIO.SYSが行う(デフォルト)
	    0001h: ディスク入れ換え表示をユーザルーチンが行う
	■AX=0001hのとき
	DS:DX=呼び出されるユーザルーチンのエントリアドレス(FAR CALL)
出力	レジスタ変化なし
解説  o フロッピーディスク(相当)ドライブが1台のとき、A:ドライブと
	B:ドライブを交互にアクセスするとIO.SYSが「ドライブ A:(B:)に
	対応するディスクを挿入後,適当なキーを押してください」と表示
	して、キー入力待ちする。
	このファンクションでは、その処理を置き換えるルーチンを設定
	できる。
      o DS:DXで設定するユーザルーチンは、IO.SYSの内部からFAR CALLで
	呼び出される。このとき、次にアクセスするドライブの番号が
	AL(00h=A:, 01h=B:)にセットされている。
	ユーザルーチンでは、全レジスタを保証しなければならない。
      o PC-98LT・HAだけの機能。
関連	INT DCh - Function 14h Subfunction 0000h(LT・HA)
	0060:0082h
	0060:0090h


INT DCh - Function 13h
分類	拡張MS-DOS
名前	MS-DOSドライブ名−DA/UA対照リストの取得
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=13h
	DS:DX=DA/UAリスト出力バッファ(バッファサイズ60hバイト)
出力	レジスタ変化なし
解説  o MS-DOSのドライブがどのディスク装置に割り当てられているかを示す
	リストをDS:DXで指定したメモリに書き込む。
      o リストのオフセット+1B〜+4Dhの間の奇数番地にはA:〜Z:ドライブの
	DA/UAがセットされる。
	オフセット+00〜+0FhにもDA/UAがセットされるが、P:ドライブまでの
	情報しか得られない。
      u 原則として、IO.SYS内蔵のブロックデバイスの情報が書き込ま
	れる。デバイスドライバによって追加されたドライブの情報は得られない。
	例外として、MS-DOS付属のRAMDISK.SYSとJEIDAメモリカードドライブ
	(MCDRV.SYS)では、その情報をこのファンクションで得ることができる。
関連	0060:0038h
	0060:006C〜007Bh
	0060:0136h
	0060:013Bh
	0060:2C86〜2CB9h
表	DA/UAリスト出力バッファの構造
	-------+--------------- -------+--------------- -------+---------------
	オフセット  |内容            オフセット  |内容            オフセット  |内容
	-------+--------------- -------+--------------- -------+---------------
	+00h   |A:DA/UA		+1Ah   |A:アトリビュート	+34h   |N:アトリビュート
	+01h   |B:DA/UA		+1Bh   |A:DA/UA   	+35h   |N:DA/UA
	+02h   |C:DA/UA		+1Ch   |B:アトリビュート	+36h   |O:アトリビュート
	+03h   |D:DA/UA		+1Dh   |B:DA/UA   	+37h   |O:DA/UA
	+04h   |E:DA/UA		+1Eh   |C:アトリビュート	+38h   |P:アトリビュート
	+05h   |F:DA/UA		+1Fh   |C:DA/UA   	+39h   |P:DA/UA
	+06h   |G:DA/UA		+20h   |D:アトリビュート	+3Ah   |Q:アトリビュート
	+07h   |H:DA/UA		+21h   |D:DA/UA   	+3Bh   |Q:DA/UA
	+08h   |I:DA/UA		+22h   |E:アトリビュート	+3Ch   |R:アトリビュート
	+09h   |J:DA/UA		+23h   |E:DA/UA   	+3Dh   |R:DA/UA
	+0Ah   |K:DA/UA		+24h   |F:アトリビュート	+3Eh   |S:アトリビュート
	+0Bh   |L:DA/UA		+25h   |F:DA/UA   	+3Fh   |S:DA/UA
	+0Ch   |M:DA/UA		+26h   |G:アトリビュート	+40h   |T:アトリビュート
	+0Dh   |N:DA/UA		+27h   |G:DA/UA   	+41h   |T:DA/UA
	+0Eh   |O:DA/UA		+28h   |H:アトリビュート	+42h   |U:アトリビュート
	+0Fh   |P:DA/UA		+29h   |H:DA/UA   	+43h   |U:DA/UA
	+10h   |00h		+2Ah   |I:アトリビュート	+44h   |V:アトリビュート
	+11h   |00h		+2Bh   |I:DA/UA   	+45h   |V:DA/UA
	+12h   |00h		+2Ch   |J:アトリビュート	+46h   |W:アトリビュート
	+13h   |00h		+2Dh   |J:DA/UA   	+47h   |W:DA/UA
	+14h   |00h		+2Eh   |K:アトリビュート	+48h   |X:アトリビュート
	+15h   |00h		+2Fh   |K:DA/UA   	+49h   |X:DA/UA
	+16h   |00h		+30h   |L:アトリビュート	+4Ah   |Y:アトリビュート
	+17h   |00h		+31h   |L:DA/UA   	+4Bh   |Y:DA/UA
	+18h   |00h		+32h   |M:アトリビュート	+4Ch   |Z:アトリビュート
	+19h   |00h		+33h   |M:DA/UA   	+4Dh   |Z:DA/UA
	-------+--------------- -------+--------------- -------+---------------
	
	-------+------------------------------------------------------------
	オフセット   内容
	-------+------------------------------------------------------------
	+4Eh   |00h=物理ドライブと論理ドライブの対応が1対1
	       |FFh=1台の物理ドライブに2台の論理ドライブが割り当てられている
	       |(0060:0038hのコピー)
	+4Fh   |00h=物理ドライブと論理ドライブの対応が1対1
	       |FFh=1台の物理ドライブに2台の論理ドライブが割り当てられている
	       |(0060:013Bhのコピー)
	+50h   |最後にアクセスしたドライブ番号(A:=00h)
	       |(0060:0136hのコピー)
	+51〜  |
	    5Fh|00h(未使用)
	-------+------------------------------------------------------------
	* 1台の物理ドライブに2台の論理ドライブが割り当てられるのは、
	  MS-DOS 5.0では、ディスクがフロッピーディスク1台だけの場合。
	  オフセット+4Ehと+4Fhの差異は不明。
	* CONFIG.SYSで追加したブロックデバイスは、原則としてDA/UAの
	  値がセットされない。PCMCIAメモリカードドライブ(MCDRV.SYS)、
	  RAM DISK(RAMDISK.SYS)は例外。
	
	[DA/UAの意味]
	-------+------------------------------------------------
	DA/UA  |装置の種類
	-------+------------------------------------------------
	00h    |ドライブなし
	68〜6Bh|BRANCH 4670 I/Fに接続された仮想ドライブ
	70〜73h|640KB FD I/Fに接続されたドライブ
	80〜83h|SASI・ESDI・IDE HD
	90〜93h|1MB FD I/Fに接続されたドライブ
	A0〜A6h|SCSI I/Fに接続されたHD, 3.5"MO, 5"MO, CD-ROM
	D0h    |ROMドライブ
	D1h    |PCMCIAメモリカードドライブ
	E0h    |RAM DISK(RAMDISK.SYS)
	-------+------------------------------------------------
	* 両用FD I/Fでは、1MB I/Fモードにしたときは9xh、
	  640KB I/Fモードにしたときは7xhになる。
	* 0000:0494hで存在確認できる外付1MB FDDも7xhになる。この場合、外付
	  1MB FDDは1MB専用なので、そのドライブに対してDA/UA=7xhでINT 1Bhの
	  リード/ライトはできない。DA/UA=Fxhでのみリード/ライト可能。
	* DA/UA=D0hのドライブにBIOSでアクセスするには、INT 1Fh - Function 94h,
	  95hを用いる。
	* DA/UA=D1hのドライブにBIOSでアクセスするには、INT 1Fh - Function B4〜
	  B8hを用いる。
	  PC-9801NLは標準で使用可能。PCMCIA2.0スロット搭載機は
	  MCDRV.SYS組み込み時使用可能。
	* DA/UA=E0hのRAM DISKにBIOSでアクセスする場合、INT 1Bh - Function 05h,
	  06h(RAMDISK)を用いる。
	
	[アトリビュートの意味]
	-------+----------------------------------------------------------
	bit    |意味
	-------+----------------------------------------------------------
	7      |1=1台の物理ドライブに2台の論理ドライブが割り当てられている
	       |0=物理ドライブと論理ドライブの対応が1対1。
	6〜2   |未使用
	1      |論理ドライブのセクタ指定幅(MS-DOS 5.0以降)
	       |1=32ビットセクタ(BPBのオフセット13hが0のドライブ)
	       |0=16ビットセクタ(BPBのオフセット13hが0以外のドライブ)
	0      |MO識別
	       |1=5"MO, 3.5"MO
	       |0=その他
	-------+----------------------------------------------------------
	* 両用、3モードドライブなどを示すフラグはない。


INT DCh - Function 13h(LT・HA)
分類	拡張MS-DOS
名前	画面のハードコピー
	Undocumented
対象	MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力	CL=13h
	AX=0000h  テキスト画面のハードコピー
	AX=0001h  G-VRAMをイメージ出力
	AX=0002h  G-VRAMをイメージ出力(AX=0001hと同じ処理)
出力	レジスタ変化なし
	レジスタ変化なし
解説  o プリンタに画面のハードコピーを出力する。
	INT 05hのハードコピールーチンと一部を共用している。
      o PC-98LT・HAだけの機能。
関連	


INT DCh - Function 14h Subfunction 0000h,0001h
分類	拡張MS-DOS
名前	拡張アトリビュートモードの設定
	Undocumented
対象	MS-DOS 3.3D:IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
	PC-H98(ノーマル・ハイレゾ)
入力	CL=14h
	AX=モード指定
	    0000h: EGHモード
	    0001h: PCモード(デフォルト)
出力	レジスタ変化なし
解説  o 拡張アトリビュートのモードを設定する。
      u モードの切換は以下のエスケープシーケンスでも行える。(Undocumented)
	-----------+-----------------------------
	エスケープシーケンス|モード
	-----------+-----------------------------
	ESC+"[?5h" |EGHモード
	ESC+"[?5l" |PCモード
	-----------+-----------------------------
      o アトリビュートのモードが変化した場合、IO.SYSワークエリア内の
	現在の表示アトリビュートを消去アトリビュートに設定する。
      o PC-H98以外の機種ではなにもしない。
関連	0060:011Dh
	0060:0114h
	0060:013Ch
	0060:013Eh
	0060:05D6h
	INT 18h - Function 2Ah
	INT DCh - Function 14h Subfunction 8000h


INT DCh - Function 14h Subfunction 0010h,0011h
分類	拡張MS-DOS
名前	テキストモードの設定
	Undocumented
対象	MS-DOS 5.0, 5.0A:IO.SYS
	PC-H98(ノーマル),PC-98GS,PC-9821(Bp・Bs・Be・Bf・Tsを除く)
入力	CL=14h
	AX=モード指定
	    0010h: 行間空き25行
	    0011h: 20/25行(デフォルト)
出力	レジスタ変化なし
解説  o 行間空き25行表示モードと、通常の20/25行表示モードを切り替える。
	MS-DOS 5.0では、PC-H98のみ対応。MS-DOS 5.0A以降では、PC-H98, PC-98GS,
	PC-9821(Bp・Bs・Be・Bf・Tsを除く)に対応。対応外の機種ではなにもしない。
      u モードの切換は以下のエスケープシーケンスでも行える。(Undocumented)
	-----------+-----------------------------
	エスケープシーケンス|モード
	-----------+-----------------------------
	ESC+"[?3h" |行間空き25行
	ESC+"[?3l" |20/25行
	-----------+-----------------------------
      o 行間空き25行モード時、キーボードからの[CTRL]+[f・6]入力や、エスケープ
	シーケンスESC+"[>3h"で20行モードへの切換はできない。
      o PC-98GS,PC-9821(Bp・Bs・Be・Bf・Tsを除く)では、行間空き25行モードを指定
	すると水平走査周波数は31.47kHzに設定される。20/25行モードを指定する
	と、必ず24.83kHzに設定されてしまう(起動時の水平走査周波数が31.47kHzの
	ときも)。
      o PC-H98では、専用ディスプレイ使用時のノーマルモード(水平走査周波数
	31.47kHz)時のみ有効。PC-H98のハイレゾモードとPC-H98S model8では、
	本ファンクションを実行しても行間空き25行に切り替えられない。
	ただし、AX=0010hのとき画面がクリアされる。AX=0011hではなにも起らない。
関連	0060:05D8h
	INT 18h - Function 2Ah
	INT 18h - Function 30h
	INT DCh - Function 14h Subfunction 8010h


INT DCh - Function 14h Subfunction 8000h
分類	拡張MS-DOS
名前	拡張アトリビュートモードの取得
	Undocumented
対象	MS-DOS 3.3D:IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
	PC-H98(ノーマル・ハイレゾ)
入力	CL=14h
	AX=8000h
出力	AX=モード設定状態
	    0001h: PC(互換)モード
	    0000h: EGHモード
解説  o INT DCh - Function 14h Subfunction 0000h,0001hで設定した
	拡張アトリビュートの設定状態を取得する。
	PC-H98以外の機種ではなにもしない。
      u MS-DOSワークエリアからではなく、INT 18h - Function 2Bhで状態取得した
	結果を通知する。
関連	0060:05D6h
	INT DCh - Function 14h Subfunction 0000h,0001h
	INT 18h - Function 2Bh


INT DCh - Function 14h Subfunction 8010h
分類	拡張MS-DOS
名前	テキストモードの取得
	Undocumented
対象	MS-DOS 5.0, 5.0A:IO.SYS
	PC-H98(ノーマル), PC-98GS, PC-9821(Bp・Bs・Be・Bf・Tsを除く)
入力	CL=14h
	AX=8010h
出力	AX=モード設定状態
	    0001h: 20/25行
	    0000h: 行間空き25行
解説  o INT DCh - Function 14h Subfunction 0010h,0011hで設定した
	テキストモードの設定状態を取得する。
	MS-DOS 5.0では、PC-H98のみ対応。MS-DOS 5.0A以降では、PC-H98, PC-98GS,
	PC-9821(Bp・Bs・Be・Bf・Tsを除く)に対応。対応外の機種ではなにもしない。
      u MS-DOSワークエリアからではなく、INT 18h - Function 2Bhで状態取得した
	結果を通知する。
関連	0060:05D8h
	INT DCh - Function 14h Subfunction 0010h,0011h
	INT 18h - Function 2Bh
	INT 18h - Function 31h


INT DCh - Function 14h Subfunction 0000h(LT・HA)
分類	拡張MS-DOS
名前	画面最上行の待避と文字表示
	Undocumented
対象	MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力	CL=14h
	AX=0000h
	ES:BX=文字列の先頭アドレス(文字列の最後は'$')
出力	レジスタ変化なし
解説  o 画面最上行の文字を待避し、その行全体をクリアする。
        指定された文字列を最上行に反転表示する。
	「ドライブ A:(B:)に対応するディスクを挿入後,適当なキーを
	押してください」の表示に利用している。
      o PC-98LT・HAだけの機能。
関連	INT DCh - Function 12h(LT・HA)
	INT DCh - Function 14h Subfunction 0001h(LT・HA)


INT DCh - Function 14h Subfunction 0001h(LT・HA)
分類	拡張MS-DOS
名前	画面最上行の復帰
	Undocumented
対象	MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力	CL=14h
	AX=0001h
出力	レジスタ変化なし
解説  o INT DCh - Function 14h Subfunction 0000hで待避しておいた画面最上行の
	文字を復帰させる。ただし、Subfunction 0000hで文字が待避されていない
	とき、または本ファンクションで文字が復帰されたあとに再度本ファンク
	ションを実行したときはなにもしない。
      o PC-98LT・HAだけの機能。
関連	INT DCh - Function 14h Subfunction 0000h(LT・HA)


INT DCh - Function 15h Subfunction 0000h
分類	拡張MS-DOS
名前	内部リビジョン番号の取得
	Undocumented
対象	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=15h
	AX=0000h
出力	AH=00h
	AL=内部リビジョン番号
解説  o ALレジスタに内部リビジョン番号を返す。内部リビジョン番号は、
	ひとつの製品のなかで最初に出荷されるバージョンに01hが付与される。
	内部的な変更が行われるたびに、順次大きな数が与えられる。
	原則として、INT DCh - Function 12hで得られる製品番号が更新される
	たびに内部リビジョン番号も01hに戻るが、MS-DOS 5.0A-Hでは、
	内部リビジョン番号とともに製品番号が変化している製品がある。
	表[MS-DOSバージョン−製品番号−内部リビジョン番号の対応]参照。
      o INT DCh - Function 15hは、Subfunction 0000hのみ存在する。
	AX=0000h以外ではなにもしない。
関連	0060:0022h
	INT DCh - Function 12h


INT DCh - Function 73h
分類	拡張MS-DOS
名前	MS-DOSドライブ名−DA/UA対照リストの取得
	Undocumented
対象	MS-DOS 3.1(PC-98HA):IO.SYS
入力	CL=73h
	AX=0000h
	DS:DX=リスト出力バッファ(バッファサイズ20hバイト)
出力	AX=リターンコード
	    0000h: 正常終了
	    FFFFh: AX≠0000hで呼び出された
解説  o MS-DOSのドライブがどのディスク装置に割り当てられているかを示す
	リストをDS:DXで指定したメモリに書き込む。
      u 原則として、IO.SYS内蔵のブロックデバイスの情報が書き込ま
	れる。デバイスドライバによって追加されたドライブの情報は得られない。
	例外として、MS-DOS付属のRAMDISK.SYSでは、その情報をこのファンク
	ションで得ることができる。
      o PC-98HAだけの機能。
表	DA/UAリスト出力バッファの構造
	-------+--------------- -------+---------------
	オフセット  |内容		オフセット  |内容
	-------+--------------- -------+---------------
	+00h   |A:アトリビュート	+10h   |I:アトリビュート
	+01h   |A:DA/UA   	+11h   |I:DA/UA   
	+02h   |B:アトリビュート	+12h   |J:アトリビュート
	+03h   |B:DA/UA   	+13h   |J:DA/UA   
	+04h   |C:アトリビュート	+14h   |K:アトリビュート
	+05h   |C:DA/UA   	+15h   |K:DA/UA   
	+06h   |D:アトリビュート	+16h   |L:アトリビュート
	+07h   |D:DA/UA   	+17h   |L:DA/UA   
	+08h   |E:アトリビュート	+18h   |M:アトリビュート
	+09h   |E:DA/UA   	+19h   |M:DA/UA   
	+0Ah   |F:アトリビュート	+1Ah   |N:アトリビュート
	+0Bh   |F:DA/UA   	+1Bh   |N:DA/UA
	+0Ch   |G:アトリビュート	+1Ch   |O:アトリビュート
	+0Dh   |G:DA/UA   	+1Dh   |O:DA/UA
	+0Eh   |H:アトリビュート	+1Eh   |P:アトリビュート
	+0Fh   |H:DA/UA   	+1Fh   |P:DA/UA
	-------+--------------- -------+---------------
	* CONFIG.SYSで追加したブロックデバイスは、原則としてDA/UAの
	  値がセットされない。ただし、RAM DISK(RAMDISK.SYS)は例外。
	
	[DA/UAの意味]
	-------+-------------------------------------------
	DA/UA  |装置の種類
	-------+-------------------------------------------
	00h    |ドライブなし(後続するドライブがない場合)
	70〜71h|FDD, RAMドライブ
	D0h    |ROMドライブ
	D1h    |JEIDAメモリカードドライブ
	E0h    |RAMDISK(RAMDISK.SYS)
	E1h    |BP RAM DISK(BPRAM.SYS)
	FFh    |ドライブなし(後続するドライブがある場合)
	-------+-------------------------------------------
	* DA/UA=D0hのドライブにBIOSでアクセスするには、INT 1Fh - Function 94h,
	  95hを用いる。
	* DA/UA=D1hのドライブにBIOSでアクセスするには、INT 1Fh - Function B4〜
	  B8hを用いる。
	* DA/UA=E0hのRAMDISKにBIOSでアクセスする場合、INT 1Bh - Function 05h,
	  06h(RAMDISK)を用いる。
	
	[アトリビュートの意味]
	-------+-------------------------------------------
	値     |意味
	-------+-------------------------------------------
	00h    |FDD, ROMドライブ, RAMDISK, BP RAM DISK
	01h    |FDD(1台の物理ドライブに2台の論理ドライブが
	       |割り当てられているとき)
	02h    |RAMドライブ
	-------+-------------------------------------------
関連	0060:0038h
	0060:006C〜007Bh
	0000:0488h


INT DCh - Function 74h
分類	拡張MS-DOS
名前	BP RAMアクセス状態の指定と取得
	Undocumented
対象	MS-DOS 3.1(PC-98HA):IO.SYS
入力	CL=74h
	AX=機能指定
	    0000h: BP RAMアクセス不可能
	    0001h: BP RAMアクセス可能
	    8000h: BP RAMアクセス状態取得
出力	AX=リターンコード
	    0000h: BP RAMアクセス不可能
	    0001h: BP RAMアクセス可能
	    FFFFh: AX=0000h,0001h,8000h以外の値で実行した
解説  o BPRAM.SYS(BPRAMを利用したRAMディスクドライバ)が提供するRAMディスクに
	アクセス可能にするかどうかを設定する。BP RAMは、PC-98HAに内蔵されて
	いるリチウム電池でバックアップされた不揮発性メモリである。
      o	BP RAMアクセス不可能に設定すると、BPRAM.SYSの作成したドライブに
	対して読み書きができない。
	BP RAMアクセス可能に設定すると、BPRAM.SYSの作成したドライブは
	一般的なRAMディスクドライブのように使用することができる。
      o BP RAMドライブは、スケジューラのデータを保存するために使用されて
	いる。通常はBP RAMアクセス不可能の状態に設定されているので、
	ユーザからはドライブとして見えない。
      o PC-98HAだけの機能。
関連	0060:0046h


INT DCh - Function 80h Subfunction 0000h
分類	拡張MS-DOS
名前	ディスクパーティション数等の取得
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=80h
	AX=0000h
	DS:DX=バッファアドレス(バッファサイズ100hバイト)
出力	レジスタ変化なし
解説  o 接続されているハードディスクのアクティブパーティション数、
	各パーティションの先頭物理セクタ番号等を示すリストを、
	DS:DXで指定したメモリに書き込む。
      u 主な処理内容は次の通り。
	DS:DXからの100hバイトを0クリアし、IO.SYSワークエリアの各部
	(DOSのバージョンによって異なる)からデータをコピーする。
      o PS98-011は、SCSI接続機器をサポートしていない。
	SASI HD #2,#3は、PC-H98のみサポート。
関連	0060:00ACh
	0060:1A50h
	0060:1B50h
	0060:1D29h
	0060:1DA9h
	0060:2A88h
	0060:2B48h
表	バッファ構造
	-------+------------------------------------------------------------
	オフセット  |内容
	-------+------------------------------------------------------------
	+00h   |SASI・IDE HD #0 アクティブパーティション数
	+01h   |SASI・IDE HD #1 アクティブパーティション数
	+02h   |ESDI HD #2     アクティブパーティション数
	+03h   |SASI HD #3     アクティブパーティション数
	+04h   |SCSI HD/MO #0  アクティブパーティション数
	+05h   |SCSI HD/MO #1  アクティブパーティション数
	+06h   |SCSI HD/MO #2  アクティブパーティション数
	+07h   |SCSI HD/MO #3  アクティブパーティション数
	+08h   |SCSI HD/MO #4  アクティブパーティション数
	+09h   |SCSI HD/MO #5  アクティブパーティション数
	+0Ah   |SCSI HD/MO #6  アクティブパーティション数
	+0Bh   |00(未使用)
	-------+------------------------------------------------------------
	* 拡張フォーマットされたハードディスクまたはMO内のMS-DOSアクティブ
	  パーティションの数。
	* 3.5"MOは常に1、5"MOは常に4。
	
	バッファ構造(続き)
	-------+------------------------------------------------------------
	オフセット  |内容
	-------+------------------------------------------------------------
	+0Ch   |1MB   FD 論理ドライブ数
	+0Dh   |640KB FD 論理ドライブ数
	+0Eh   |SASI  HD 論理ドライブ数
	+0Fh   |SCSI  HD 論理ドライブ数
	-------+------------------------------------------------------------
	* SCSI HD論理ドライブ数の中に、3.5"MO、5"MOの論理ドライブ数は
	  含まれない。
	* FDD 1台のみの状態で、1台のFDDに2個の論理ドライブが割り当て
	  られているとき、論理ドライブ数は2になる。
	
	バッファ構造(続き)
	--------+-----------------------------------------------------------
	オフセット   |内容
	--------+-----------------------------------------------------------
	+10〜13h|SASI HD #0    アクティブパーティション1の先頭物理セクタ番号
	+14〜17h|SASI HD #0    アクティブパーティション2の先頭物理セクタ番号
	+18〜1Bh|SASI HD #0    アクティブパーティション3の先頭物理セクタ番号
	+1C〜1Fh|SASI HD #0    アクティブパーティション4の先頭物理セクタ番号
	+20〜2Fh|SASI HD #1    アクティブパーティション1〜4の先頭物理セクタ番号
	+30〜3Fh|SASI HD #2    アクティブパーティション1〜4の先頭物理セクタ番号
	+40〜4Fh|SASI HD #3    アクティブパーティション1〜4の先頭物理セクタ番号
	+50〜5Fh|SCSI HD/MO #0 アクティブパーティション1〜4の先頭物理セクタ番号
	+60〜5Fh|SCSI HD/MO #1 アクティブパーティション1〜4の先頭物理セクタ番号
	+70〜7Fh|SCSI HD/MO #2 アクティブパーティション1〜4の先頭物理セクタ番号
	+80〜8Fh|SCSI HD/MO #3 アクティブパーティション1〜4の先頭物理セクタ番号
	+90〜9Fh|SCSI HD/MO #4 アクティブパーティション1〜4の先頭物理セクタ番号
	+A0〜AFh|SCSI HD/MO #5 アクティブパーティション1〜4の先頭物理セクタ番号
	+B0〜BFh|SCSI HD/MO #6 アクティブパーティション1〜4の先頭物理セクタ番号
	+C0〜CFh|00(未使用)
	+D0〜FFh|00(未使用)
	--------+-----------------------------------------------------------
	* 3.5"MOの先頭物理セクタ番号は常に0。


INT DCh - Function 80h Subfunction 0001h
分類	拡張MS-DOS
名前	不明
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=80h
	AX=0001h
	DS:DX=バッファアドレス(バッファサイズ100hバイト)
出力	レジスタ変化なし
解説  o IO.SYSのワークエリアのうち、画面・キーボード制御関係の部分をDS:DXで
	指定したメモリに書き込む。
      u 主な処理内容は次の通り。
	DS:DXからの100hバイトを0クリアし、DS:DXに0060:0106〜011Fh(1Ahバイト)を
	コピーする。ただし、0060:011FhのワークエリアはサイズがWORDであるため、
	このファンクションでは下位8ビットだけがコピーされることになる。
関連	0060:0106〜011Fh


表	バッファに格納される情報(詳細は0060:0106〜011Fh参照)
	-------+-------+---------------------------------------------------
	オフセット  |幅     |内容
	-------+-------+---------------------------------------------------
	+00h   |BYTE   |特殊入力モード
	+01h   |BYTE   |[CTRL]+[P]・[N]モード
	+02h   |BYTE   |未使用(DOS 5.0A)
	+03h   |BYTE   |特殊入力モード時の16進数変換用ワークエリア
	+04h   |WORD   |特殊入力モード時に使用するサブルーチンのオフセット
	+06h   |BYTE   |[CTRL]+ファンクションキーモード
	+07h   |BYTE   |未使用(DOS 5.0A)
	+08h   |BYTE   |未使用(DOS 5.0A)
	+09h   |BYTE   |未使用(DOS 5.0A)
	+0Ah   |BYTE   |カーソル位置Y座標
	+0Bh   |BYTE   |ファンクション表示状態フラグ
	+0Ch   |BYTE   |スクロール範囲下限
	+0Dh   |BYTE   |画面ライン数
	+0Eh   |BYTE   |消去アトリビュート
	+0Fh   |BYTE   |漢字上位バイト格納フラグ
	+10h   |BYTE   |漢字上位バイト格納用ワークエリア
	+11h   |BYTE   |行折り返しモード
	+12h   |BYTE   |スクロールスピード
	+13h   |BYTE   |消去キャラクタ
	+14h   |BYTE   |未使用(DOS 5.0A)
	+15h   |BYTE   |カーソル表示状態フラグ
	+16h   |BYTE   |カーソル位置のX座標
	+17h   |BYTE   |表示アトリビュート
	+18h   |BYTE   |スクロール範囲上限
	+19h   |WORD   |スクロール時のウェイト値(このファンクションではこの
	       |       |ワークエリアの下位1バイトしかコピーしない)
	-------+-------+---------------------------------------------------


INT DCh - Function 80h Subfunction 8000h
分類	拡張MS-DOS
名前	BRANCH 4670仮想ドライブの有無
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=80h
	AX=8000h
出力	AL=BRANCH 4670仮想ドライブの有無
	    00h    : なし
	    00h以外: あり
解説  o BRANCH 4670仮想ドライブの有無を返す。
	BRANCH 4670仮想ドライブは、4台のMS-DOS論理ドライブとして組み込まれる。
関連	0060:19FBh


INT DCh - Function 80h Subfunction 8001h
分類	拡張MS-DOS
名前	不明
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=80h
	AX=8001h
出力	AL=0060:27D2h
解説  o ALレジスタに0060:27D2hの値を入れてリターンする。
関連	


INT DCh - Function 80h Subfunction 8002h
分類	拡張MS-DOS
名前	MS-DOS付属日本語入力FEPの組み込み状況
	Undocumented
対象	MS-DOS 3.1(PS98-011):IO.SYS
	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=80h
	AX=8002h
出力	AL=MS-DOS付属日本語入力FEPの組み込み状況
	    00h: 組み込まれていない
	    01h: 組み込まれている
解説  o MS-DOS付属日本語入力FEPの組み込み状況を返す。
関連	0060:1E50h


INT DCh - Function 81h Subfunction 0000h
分類	拡張MS-DOS
名前	実装プロテクトメモリ容量の取得
	Undocumented
対象	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=81h
	AX=0000h
出力	AL=実装プロテクトメモリ容量(128KB単位)
解説  o 100000h(1Mバイト)〜FFFFFFh(16Mバイト-1)のアドレスに実装されている
	プロテクトメモリの容量を返す。
	MS-DOSは起動時に、プロテクトメモリ容量をIO.SYSワークエリア
	(0060:0031h)に保存している。このファンクションはそれを読み出して返す。
	たとえば、1Mバイトのプロテクトメモリが実装されている場合、08hが返る。
      o	INT DCh - Function 81h Subfunction 0001hでメモリを獲得した場合も、
	このファンクションで得られる値は変化しない。
関連	0060:0031h


INT DCh - Function 81h Subfunction 0001h
分類	拡張MS-DOS
名前	プロテクトメモリのアロケート要求
	Undocumented
対象	MS-DOS 3.3(all):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=81h
	AX=0001h
	    * AX≠0000h ならなんでも良い
	BX=アロケートしようとするプロテクトメモリ容量(128KB単位)
出力	AX=0000h アロケート完了
		BX = アロケートされたメモリの開始アドレス(64KB単位)
		     返される値は10h(アドレス100000h)以上
		DX = アロケートされたメモリの終了アドレス(64KB単位)
	AX=0001h 指定された容量の利用可能なプロテクトメモリがない
		BX = アロケート可能なメモリの最大容量(128KB単位)
	AX=FFFFh プロテクトメモリが実装されていない
解説  o プロテクトメモリをアプリケーションに割り当てる。
	メモリの上位アドレスから順に割り付ける。
	メモリを取得すると0000:0401h(BYTE)の値を減じる。
      u 一度獲得したメモリを開放するファンクションはない。
関連	0000:0401h


INT DCh - Function 82h Subfunction 0000h
分類	拡張MS-DOS
名前	利用可能なプロテクトメモリ容量とアドレス範囲の取得
	Undocumented
対象	MS-DOS 3.3B,C,D(PS98-017・019・1002):IO.SYS
	MS-DOS 5.0, 5.0A:IO.SYS
入力	CL=82h
	AX=0000h
出力	AX=未使用プロテクトメモリ容量(128KB単位)
	    * ノーマルモードでは、0000:0401hの値が返る
	    * ハイレゾモードでは、0000:0401h-2の値が返る(0000:0401h<2の
	      ときは0)
	BX=未使用プロテクトメモリ領域の最小アドレス(64KB単位)
	    * ノーマルモードでは、必ず10h(=100000h)が返る
	    * ハイレゾモードでは、必ず14h(=140000h)が返る
	DX=未使用プロテクトメモリ領域の最大アドレス+1(64KB単位)
	    * 0000:0401h*2+10hの値が返る
解説  o 100000h(1Mバイト)〜FFFFFFh(16Mバイト-1)のアドレスに実装されている
	未使用プロテクトメモリ容量と、そのアドレスの範囲を返す。
	未使用プロテクトメモリ容量の管理は、0000:0401hを使用する。
      o たとえば、1Mバイトの未使用プロテクトメモリがある場合以下のようになる。
	ノーマルモードでは、AX=08h(08h*128K=1MB)、BX=10h(最小アドレス=
	100000h)、DX=20h(最大アドレス=200000h-1)が返る。
	ハイレゾモードでは、AX=06h(06h*128K=768KB)、BX=14h(最小アドレス=
	140000h)、DX=20h(最大アドレス+1=200000h)が返る。
      u MS-DOS 3.3B,Cでは、0000:0401hの参照をワードで行っている。このため、
	状況によっては正常に動作しないことがある。MS-DOS 3.3D以降では修正
	されている。
      o AX=0000h以外で実行すると、なにもせずにAX=FFFFhでリターンする。
関連	0000:0401h